Как удалить последние 6 каталогов из пути

По требованию я должен очистить каталог test3 до test8, то есть последние 6 каталогов.

[testuser@test4 logs]$ pwd
/util/team4/logs

drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test1
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test2
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test3
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test4
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test5
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:17 test6
-rw-r--r-- 1 testuser team4     0 Nov 30 01:18 files_between_7
-rw-r--r-- 1 testuser team4     0 Nov 30 01:18 files_between_8
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:18 test7
drwxr-xr-x 2 testuser team4  4096 Nov 30 01:18 test8

Подскажите, пожалуйста, как это сделать.

-1
30.11.2016, 12:16
2 ответа

Вы можете использовать это:

ls -dt */ |head -n 6| xargs -I{} rm -vr {}

или вы можете использовать:

find ./* -type d  -printf "%T+\t%p\n" | sort | head -n 6 | awk -F "/" '{print $NF}'  | xargs -I{} rm -vr {}

это будет работать с папками в котором есть пробелы в именах

для удаления всех каталогов, кроме первых 6

find ./* -type d  -print | sort | tail -n +7 |  awk -F "/" '{print $NF}' | xargs -I{} rm -vr {}
2
28.01.2020, 05:08

вы можете удалить 6 последних каталогов в ls с помощью этой команды

ls -l |tail -n 6|tr -s " " " "|cut -d " " -f 9 |xargs rm -R
  • tail -n 6 предоставит вам последние 6 каталогов из списка
  • tr -s "" "" преобразует множество пробелов в один пробел
  • cut -d "" -f 9 извлекает имена каталогов
  • xargs rm -R xargs передаст имена 6 каталогов команде rm -R
0
28.01.2020, 05:08

Теги

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