web-dev-qa-db-ja.com

「検索」を非再帰的に使用していますか?

/bin/find /root -name '*.csv'を使用すると、以下が返されます。

/root/small_devices.csv
/root/locating/located_201606291341.csv
/root/locating/located_201606301411.csv
/root/locating/g_cache.csv
/root/locating/located_201606291747.csv
/root/locating/located_201607031511.csv
/root/locating/located_201606291746.csv
/root/locating/located_201607031510.csv
/root/locating/located_201606301412.csv
/root/locating/located_201606301415.csv
/root/locating/located_201607031512.csv

実際には/root/locating/の下のすべてのファイルが必要ではないため、期待される出力は単に/root/small_devices.csvです。

「検索」を非再帰的に使用する効率的な方法はありますか?

必要に応じて、CentOSを使用しています。

17
DeepSpace

あなたはそれを-maxdepthオプション

/bin/find /root -maxdepth 1 -name '*.csv'

man find

-最大深度レベル

開始点より下のディレクトリのほとんどのレベル(負でない整数)のレベルを下ります。

-maxdepth 0

は、テストとアクションを開始点自体にのみ適用することを意味します。

24
Sundeep

標準のfindを使用:

find /root ! -path /root -Prune -type f -name '*.csv'

これにより、/rootディレクトリ自体を除いて、検索から/root内のすべてのディレクトリがプルーニング(削除)され、*.csvに一致する通常のファイルのファイル名の印刷が続行されます。

GNU find(および-maxdepthを理解する他のfind実装)を使用):

find /root -maxdepth 1 -type f -name '*.csv'
8
Kusalananda