これは、ディレクトリ内から x 個以上のファイルを削除するコマンドです
(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm
コマンドラインを使用してディレクトリの外部から同じことを行うようにこれを変更する方法を教えてください
これは、ディレクトリ内から x 個以上のファイルを削除するコマンドです
(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm
コマンドラインを使用してディレクトリの外部から同じことを行うようにこれを変更する方法を教えてください
これを試してください:
cd /path/to/dir && { (ls -t|head -n 5;ls)|sort|uniq -u|xargs rm; }
ディレクトリが存在しない場合は何もしません。
find を使用して、最新の x 個のファイルのみを保持します。
find /path/to/dir ! -newer $(ls -t | sed 'x!d') -exec rm {} \;
元の行については、ソートを逆にして 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 {} \;