Переместите все поддиректории нижнего уровня (но НЕ каталоги или файлы среднего уровня) в целевой каталог

ps-watcher - это инструмент, который отслеживает, какие процессы запущены, и выполняет действие при определенных обстоятельствах. Давайте установим его:

apt-get install ps-watcher

Для получения подробной информации см. Нижнюю часть запуска HHVM с возвратом к PHP-FPM. Это было хорошо для меня.

1
задан 1 June 2014 в 19:46

1 ответ

Один из подходов может заключаться в использовании find для получения каждой директории и передачи результатов ко второму find и выполнения перемещения только в том случае, если второй find делает для возврата любых каталогов ниже данного, например.

while read -rd $'\0' dir; do 
    [[ -z $(find "$dir" -mindepth 1 -type d) ]] && mv -t path/to/target "$dir"
done < <(find -depth -type d -print0)

или

find -depth -type d -execdir \
bash -c '[[ -z $(find "$0" -mindepth 1 -type d) ]] && mv -t path/to/target "$0"' {} +

, например. заданный

$ tree .
.
├── dir1
└── dir2
    ├── dir2.a
    └── dir2.b

, тогда

$ while read -rd $'\0' dir; do [[ -z $(find "$dir" -mindepth 1 -type d) ]] && echo mv -t path/to/target "$dir"; done < <(find -depth -type d -print0)
mv -t path/to/target ./dir1
mv -t path/to/target ./dir2/dir2.b
mv -t path/to/target ./dir2/dir2.a
0
ответ дан 24 May 2018 в 07:06

Другие вопросы по тегам:

Похожие вопросы: