/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を使用します。
答え1
-maxdepth
これを行うには、次のオプションを使用できます。
/bin/find /root -maxdepth 1 -name '*.csv'
コメントで述べたように、-mindepth 1
出力から開始点を除外するために追加されました。からman find
:
-最大深さレベル
始点を下回るほとんどのレベル(非負の整数)ディレクトリレベル。
-maxdepth 0
これは、テストとタスクが開始点自体にのみ適用されることを意味します。- 最小深さレベル
レベル(負以外の整数)より低いレベルでは、テストや操作を適用しないでください。
-mindepth 1
始点を除くすべてのファイルの処理を示します。
答え2
標準find
:
find /root ! -path /root -prune -type f -name '*.csv'
これにより、検索からディレクトリ自体を除くすべてのディレクトリが/root
削除(削除)されます。/root
*.csv
GNUの使用find
(および他のfind
実装について-maxdepth
):
find /root -maxdepth 1 -type f -name '*.csv'
パスを切り捨てるには/root/locating
:
find /root -path /root/locating -prune -o -type f -name '*.csv' -print
これで、/root
特定のサブディレクトリを除くすべてのサブディレクトリが入力されます/root/locating
。
-maxdepth
このオプションを使用してこれを行うことはできません。
答え3
-maxdepth
次の-mindepth
基本色を使用できます。
find /root -maxdepth 1 -mindepth 1 -name '*.csv'
そしてFreeBSDfind
-depth 1
(macOSで使用)代わりに使用したいかもしれませんが、-maxdepth 1 -mindepth 1
これは非効率的です。スティーブン・チャジェラス 以下のコメント、「1より大きい深さのディレクトリに降りるのをdepth 1
やめません。」find
-maxdepth 1
牛に似た一種の栄養find
サポートしていません。-depth n