2016-05-21 10 views
-1

findを使用してファイルに下降する再帰的スクリプトを使用する際に問題があります。私たちは日付が切れているが、今は削除できない場合、.oldとしてフォルダをマークし始めました。ツリーの先頭から始まり、名前に基づいてサブディレクトリに移動するスクリプトを変更しています。 findコマンドを修正して、.oldエンディングを含むフォルダに降りかからないようにするにはどうすればよいですか? そして、私がこのトピックを読んでいるなら、.oldの終わりを含むフォルダに降下するしか方法がありません。名前が一致する場合にのみBashがファイルに降下する

現在行はこのようなものになります。おかげで、 アリック

+0

質問を編集してスクリプトを追加してください。 –

+0

[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)をご覧ください。 – Cyrus

+0

が追加されましたが、そのような愚かな行ですが、私はそれが助けているとは確信していません... –

答えて

1

が再帰的に.oldディレクトリとサブディレクトリを除いたファイルを検索する

josh=`find "${file}/." -name "*.joshfiles"` 

を("${file}"と仮定すると、ディレクトリを参照し、"*.joshfiles"は、ファイルではなくディレクトリです):

find "${file}/." -type f -name "*.joshfiles" -not -path "*.old/*" 

または01のみにファイルを含めるのディレクトリとサブディレクトリ:

find "${file}/." -type f -name "*.joshfiles" -path "*.old/*" 

"*.joshfiles"がディレクトリであれば、あなたが代わりにこれを必要とする:

find "${file}/." -type f -path "*.joshfiles/*" -not -path "*.old/*" 
+0

.oldがメインディレクトリにある場合のみ、パスはサブディレクトリにも降下する必要があります。 –

+0

これは '.old 'も少なくとも' find(GNU findutils)4.6.0'と一緒にサブディレクトリに置いてください。 – webb

+0

find(GNU findutils)4.4.2が記載されているように動作しない –

0

は.old拡張子を持つディレクトリを無視:ディレクトリのfind/\(-type d -name \*.old -prune \) -o -print

のみディレクトリと内容で。古い拡張子:find/\(-type d -name \*.old \) -o -path \*.old/\*

これらのフラグはGN Uの検索とBSDの検索。

関連する問題