2017-07-31 12 views
1

私は次のコマンドを持つスクリプトを持っています。私は、サブディレクトリを使わずにパスのディレクトリ内のファイルのみを検索するように編集しようとしています。これは再帰的検索ではありません。findを使用してディレクトリ内の特定のファイルを非再帰的に検索します。 AIX

find {Path} -name "cor *" -type f -exec ls -l {} \;

例:cor123.logのみを指定し、cor456.logは指定しないでください。現在、それは私が-maxdepth使用してみまし両方

<Path> 
    ..cor123.log 
    <directory> 
     ..cor456.log 

を与えるが、それはAIXでサポートされていません。 -pruneと-depthも役に立ちませんでした。

助けていただければ幸いです。おかげ

答えて

0

あなたは非再帰的にファイルやディレクトリを見つけるために

find . -name . -o -prune 

を使用することができます。

だからあなたの場合には、この1は動作します:

find . -name . -o -prune -name 'cor*' -type f -exec ls -l {} \; 
+0

私はこれを試しましたが動作しませんでした。ファイルを返さなかった –

+0

ドットを実際のパスに置き換えましたか?最初の例は、あなたの環境で動作しますか? – MichalH

+0

はい、私はドット(見つけた後のもの)を置き換えましたが、結果を得られませんでした。最初のコマンドはうまくいきませんでした。 –

0

は、あなただけのファイルを選択するためのfindが必要ですか?あなたはcorで始まるすべてのファイルがのレギュレーションファイルであることを知ったとき
することは、あなたが-type fを必要とするとき、あなたは結果をフィルタリングするために試すことができます
ls -l ${Path}/cor*
または
ls -l ${Path}/cor*.log

を使用することができます。
ファイル名には/を含めることはできませんので、パスの後に/のすべてを削除してください。
$ {Path}の最後の文字はわかりません。これは/となり、フィルタは役に立たなくなります。パスの後に、次の文字を探す前に少なくとも1文字必要です/

find "${Path}" -name "cor*" -type f 2>/dev/null| grep -Ev "${Path}..*/" | xargs -ls 
関連する問題