2017-01-23 2 views
1

内のディレクトリがしかし、私はエラー<p>リストの後に一致するファイルとディレクトリの両方を削除する必要があります。 rmfとrm -rfの代わりに?</p> <p>これを達成する方法は?</p>

find: `magsubmit_*': No such file or directory 
matching_files= 
の下に取得しています削除する方法
+0

'$ line'には何がありますか?あなたは例を投稿できますか? – hansaplast

+1

また、問題を説明するために必要でないので、 'days = ...'、 'flag = ...'、 'now = ...'行を削除してください。 – hansaplast

+1

私の見解では、あなたの 'matching_files = $(find" $ log_dir/"$ pattern")マテリアルを次のものに置き換えることがよくあります: 'find" $ log_dir/"$ pattern -exec bash script.sh {} +' 'スクリプト.sh'はシェルスクリプトであり、この単一のコマンドの目的のために作成されたもので、fの$ matching_filesの 'の中のコードを含みます。 do ... done'コマンドを実行し、与えられた引数を処理します( '' for f "$ @" ')。このメカニズムは、ファイル名に奇妙な文字(空白、改行など)を処理します。誰もがこれに同意するわけではありません。多くの場合、1行で行う必要があるようです。 –

答えて

1

あなたが一つずつあなたのファイルやディレクトリを処理したい場合は、あなたがバッシュ4.0以降でこれを行うことができます:

shopt -s globstar nullglob 

pattern="your_pattern_goes_here" 
for f in $log_dir/**/$pattern; do 
    # matching files 
done 

for d in $log_dir/**/$pattern/; do 
    # matching directories 
done 

それは、より効率的であるので、私はジョナサンのアプローチを好むだろう。

関連する問題