У меня ниже структура каталогов.
~/test_dir?$ls -lrt
total 8
drwxr-xr-x 5 kk Users 160B Apr 17 23:53 app1/
drwxr-xr-x 5 kk Users 160B Apr 17 23:53 app2/
drwxr-xr-x 5 kk Users 160B Apr 17 23:53 app3/
drwxr-xr-x 5 kk Users 160B Apr 17 23:53 app4/
drwxr-xr-x 5 kk Users 160B Apr 17 23:53 app5/
~/test_dir?$cd app1
~/test_dir/app1?$ls -rlt
total 0
drwxr-xr-x 2 kk 10677 64B Apr 19 14:16 release1/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:16 release2/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:16 release3/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:16 release4/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:17 release5/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:17 relase23/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:17 release8.9/
lrwxr-xr-x 1 kk 10677 8B Apr 19 14:18 Current@ -> release4
~/test_dir?ls -t1 | tail -n +3 | grep -v Current
relase23/
release5/
release4/
release3/
release2/
release1/
Как сохранить или сохранить только последние два каталога, которые были изменены в последнее время, включая символические ссылки и соответствующие им каталоги, на которые они указывают?
Я пробовал ниже
~/test_dir?ls -t1 | tail -n +3 | grep -v Current
relase23/
release5/
release4/
release3/
release2/
release1/
~/test_dir/app1?$ls -t1 | tail -n +3 | grep -v Current | xargs rm -r
~/test_dir/app1?$ls -rlt
total 0
drwxr-xr-x 2 kk 10677 64B Apr 19 14:17 release8.9/
lrwxr-xr-x 1 kk 10677 8B Apr 19 14:18 Current@ -> release4
но он даже удаляет каталоги, указывающие на символическую ссылку, оставляя только разорванную символическую ссылку.
#!/bin/bash
array=("app1" "app2" "app3" "app4" "app5")
for ((i=0;i<${#array[@]};i++))
do
app=${array[$i]}
echo "the app dir name is: $app"
cd ~/test_dir/$app
count=$(ls -t1 | tail -n +4 | grep -v Current | wc -l)
echo "number of directories deleted are:"
if [ $count == 0 ]
then
echo "Nothing to delete"
echo " "
else
ls -t1 | tail -n +4 | grep -v Current| xargs rm -r
fi
done
exit
Ожидаемые результаты
~/test_dir/app1?$ls -t1 | tail -n +3 | grep -v Current | xargs rm -r
~/test_dir/app1?$ls -rlt
total 0
drwxr-xr-x 2 kk 10677 64B Apr 19 14:16 release4/
drwxr-xr-x 2 kk 10677 64B Apr 19 14:17 release8.9/
lrwxr-xr-x 1 kk 10677 8B Apr 19 14:18 Current@ -> release4
Release4 / не должен быть удален, что указывает на символическую ссылку и символическую ссылку тоже. Любая помощь Спасибо.