tcsh bashコマンドと同じです(最も最近変更された10個のディレクトリを除いてすべて削除)。

tcsh bashコマンドと同じです(最も最近変更された10個のディレクトリを除いてすべて削除)。

以下では最新の 10 個のディレクトリを維持し、残りは削除します。 bashでうまく動作します。

TCSHは以下のbashと同じですか?

keep = 10
rm -r $(ls -dt */ | tail -n +$((keep+1))) 

答え1

set keep = 10
@ tail = $keep + 1
rm -rf -- "`ls -dt -- */ | tail -n +$tail`"

ディレクトリ名(またはディレクトリへのシンボリックリンク)に改行文字が含まれている場合にのみ失敗しますが、欠陥のあるbashコードよりもはるかに安定しています。

Kusalanandaがコメントで述べたように、zshはより適切なシェルになります。

keep=10
rm -rf -- *(/om[keep+1,-1])

いずれにせよ、ディレクトリの変更時間は、そのエントリが最後に追加、削除、または名前が変更された時間(サブディレクトリではない)のみを反映するため、そのディレクトリ内のデータの寿命を測定するものではなく、通常は変更しないでください。削除基準として使用されます。

関連情報