Неверная структура папок. Есть ли способ удалить пустые подпапки, кроме одной?

Это можно сделать с помощью следующей awkкоманды:

nmap -sP 192.168.3.0/24 \
  | awk '/192.168.3/ && !/192.168.3.1$/{print $NF}'

Это указывает awkна печать последнего поля совпадающей строки (s)

2
21.04.2020, 12:34
3 ответа

Попробуйте это,

find. -maxdepth 1 -type d ! -name '.' | while read -r folder; do
        find $folder -type f -name '*.mkv' -exec mv {} $folder \;
        find $folder -type d -empty -delete
done
  • 1-й findполучит список всех первичных каталогов.
  • Второй findпереместит доступный файл.mkv в основной каталог.
  • 3-й findудалит все пустые каталоги внутри основного каталога.

Примечание :мы также можем переместить 3-й findиз цикла while, чтобы удалить все пустые каталоги за один раз.

0
19.03.2021, 02:27
shopt -s globstar nullglob
for dir in./*/; do
    for file in "$dir"/**/*.mkv; do
        [ ! -f "$file" ] && continue
        mv -i "$file" "$dir"
    done
done

Приведенный выше двойной цикл решит вашу проблему.

Он делает это путем перебора каталогов в текущем каталоге (, который должен быть каталогом, содержащим все эти каталоги верхнего -уровня ). Для каждого каталога все файлы .mkvиз любого места ниже этого каталога перемещаются в подкаталог. Это делается с помощью глобуса **в bash, который рекурсивно сопоставляется с подкаталогами.

Параметр оболочки globstarвключен, чтобы разрешить использование **, и nullglobтакже включен, чтобы циклы вообще не запускались, если нет совпадений заданных шаблонов.

Затем вы можете удалить пустые каталоги с помощью

find. -type d -empty -delete
1
19.03.2021, 02:27

Попробуйте это,

find. -mindepth 3 -type f -name "*.mkv" -exec sh -c '
    f="$1"; IFS=/ && set -- $f; echo mv -t "$2" "$f"
' find-sh {} \;

(Как найти первую подпапку:через)

Удалите echoпри проверке вывода.
Это переместит все файлы *.mkv, которые находятся глубже, чем на 2 уровня в структуре, в первый подкаталог вашего текущего каталога.

Затем вы можете удалить пустые каталоги:

find. -type d -empty -delete
0
19.03.2021, 02:27

Теги

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