![Найти каталоги больше X и переместить в новое место назначения](https://rvso.com/image/1505666/%D0%9D%D0%B0%D0%B9%D1%82%D0%B8%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B8%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5%20X%20%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%B2%20%D0%BD%D0%BE%D0%B2%D0%BE%D0%B5%20%D0%BC%D0%B5%D1%81%D1%82%D0%BE%20%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.png)
Я хочу переместить все папки (max-depth=1), которые больше 100 МБ, в новое место назначения. Вот что у меня получилось на данный момент:
du --max-depth=1 -h --threshold=100MB | head -n-1 | awk '{print $2}' | xargs -p -0 -I {} mv {} ../new_location
Почему-то мой результат не перемещается в новое место назначения, я просто вижу длинный список всех папок, которые хочу переместить, вместо того, чтобы они были перемещены.
решение1
Опция -0
означает xargs
, что входные данные поступаютнулевой-separated, а не newline-separated. В вашем awk
скрипте установите разделитель выходных записей ORS
на нулевой символ \0
:
du --max-depth=1 -h --threshold=100MB | head -n-1 | awk 'BEGIN {ORS="\0"} {print $2}' | xargs -p -0 -I {} mv {} ../new_location