2

多くのサブディレクトリの 1 つでこのコマンドを実行しています。

ls *.rst -C1 -t | awk 'NR>1' | xargs rm

基本的に、これは .rst で終わるすべてのファイルをリストし、それらが作成された時間に基づいて並べ替え、最後に作成されたファイルのみが必要です。次に、残りの *.rst ファイルを削除します。

このコマンドを実行する必要があるディレクトリが 200 あります。find コマンドを使用してディレクトリの場所をこのコマンドに渡そうとしましたが、成功しませんでした。これらのディレクトリにはすべて、inputs.in ファイルが含まれています。私が試してみました:

find . -name inputs.in | xargs ls *.rst -C1 -t | awk 'NR>1' | xargs rm

しかし、ls *.rst ビットへの入力はファイル名を含むフルパスであるため、機能していないと思います。

迅速な修正と確信していますが、ご協力とコメントをいただければ幸いです。親ディレクトリからこのコマンドを実行したいと思います。ありがとう!

4

2 に答える 2

0

GNU Parallel がインストールされている場合:

find . -name inputs.in | parallel "cd {//} && ls *.rst -C1 -t | awk 'NR>1' | xargs rm"

お使いのシステム用にパッケージ化されていない場合は、10 秒でインストールできます。

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

詳細については、簡単な紹介について紹介ビデオをご覧ください: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

チュートリアルを実行します (man parallel_tutorial)。あなたのコマンドラインはあなたを気に入るはずです。

于 2014-08-12T10:23:40.383 に答える