По требованию я должен очистить каталог 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
Подскажите, пожалуйста, как это сделать.
Вы можете использовать это:
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 {}
вы можете удалить 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