1

これは、ディレクトリ内から x 個以上のファイルを削除するコマンドです

(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm

コマンドラインを使用してディレクトリの外部から同じことを行うようにこれを変更する方法を教えてください

4

3 に答える 3

2

これを試してください:

cd /path/to/dir && { (ls -t|head -n 5;ls)|sort|uniq -u|xargs rm; }

ディレクトリが存在しない場合は何もしません。

于 2013-07-24T17:29:02.523 に答える
2

find を使用して、最新の x 個のファイルのみを保持します。

find /path/to/dir ! -newer $(ls -t | sed 'x!d') -exec rm {} \;
于 2013-07-24T17:50:34.457 に答える
2

元の行については、ソートを逆にして head を使用して最後の行を除外することをお勧めします。その後、次のようになります。

ls -drt ~/somedir/* | head -n-5 | xargs rm

このような問題については、find コマンドを調査することをお勧めします。あなたはより多くの制御を得ることができ、タイのようなものを処理することができます (例えば、5 番目に古いファイルよりも古いファイルを削除します)。

次のような未回答の詳細があります。

  • タイムチェックでサブディレクトリを除外したいと思います
  • 私はまたls、あなたが非再帰的にしたいことの使用から推測します
  • 隠しファイルについて何をしたいのかわからない

あなたはアイデアを得る。find のマニュアルページには例がありますが、次のようなものです。

DIR=cdplatform && find $DIR -maxdepth 1 -type f ! -newer $(ls -Fdrt ${DIR}/* | grep -v "/$" | head -n-4 | tail -1) -exec rm {} \;
于 2013-07-24T17:41:37.573 に答える