パスから最後の6つのディレクトリを削除する方法

パスから最後の6つのディレクトリを削除する方法

1つの要件では、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

以下を使用できます。

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

このコマンドを使用すると、lsの最後の6つのディレクトリを削除できます。

ls -l |tail -n 6|tr -s " " " "|cut -d " " -f 9 |xargs rm -R
  • tail -n 6リストの最後の6つのディレクトリを提供します。
  • tr -s " " " "複数の空間を1つの空間に変換
  • cut -d " " -f 9ディレクトリ名が抽出されます
  • xargs rm -Rxargsは、6つのディレクトリの名前をrm -Rコマンドに渡します。

関連情報