たくさんのファイルを含むディレクトリがあります。最新の6つだけを保持したい。それらの作成日を見て、古すぎるものすべてに対して rm を実行できると思いますが、これを行うためのより良い方法はありますか? たぶん、私が使用できるLinuxコマンドですか?
ありがとう!
:)
たくさんのファイルを含むディレクトリがあります。最新の6つだけを保持したい。それらの作成日を見て、古すぎるものすべてに対して rm を実行できると思いますが、これを行うためのより良い方法はありますか? たぶん、私が使用できるLinuxコマンドですか?
ありがとう!
:)
rm -v $(ls -t mysvc-*.log | tail -n +7)
ls -t
、時間でソートされたリストtail -n +7
、ここで+7はlength-7を意味するため、最初の 7 行を除くすべて$()
同封のコマンド出力から文字列のリストを作成しますrm
もちろん、ファイルを削除するには$()
splits on any white-space!これがスクリプトとしての私の見解です。ちょっとしたハックであっても、ファイル名のスペースを処理します。
#!/bin/bash
eval set -- $(ls -t1 | sed -e 's/.*/"&"/')
if [[ $# -gt 6 ]] ; then
shift 6
while [[ $# -gt 0 ]] ; do
echo "remove this file: $1" # rm "$1"
shift
done
fi
そこに ls するための 2 番目のオプションは、1 行に 1 つのファイル名を表す "one" です。ただし、ls が tty にフィードしていない場合はデフォルトのように見えるため、実際には問題ではないようです。