Locateコマンドを使用してホームフォルダー内のファイルを検索しようとしていますが、これを実行しようとすると、結果が得られません。
_locate -i -l 4 --regexp '^\/home\/jack\/[A-Za-z0-9\/\ ]*(My.)*$'
_
私も^\/home\/jack\/^(?!\.)[A-Za-z0-9\/\ ]*(My.)*$
を試しましたが、結果も返されません。
それをテストするためだけに私が探しているファイルは_/home/jack/Music/Foals/My Number.flac
_です
隠しファイルの結果を検索から除外したいと思います。
これでうまくいくようです。
locate -ir '^/home/jack/\([^.][^/]\+/\)\+My[^/]*$'
マニュアルからの引用:
-i、--ignore-caseパターンを照合するときに大文字と小文字の区別を無視します。
-r、--regexp REGEXP基本的な正規表現REGEXPを検索します。このオプションを使用する場合、PATTERNは許可されませんが、このオプションは複数回指定できます。
locate
コマンドが使用するファイルのインデックスは、通常、1日に1回だけ再構築されます。このcronジョブ/etc/cron.daily/mlocate
によって作成されます。ですから、あなたのエントリーはおそらくまだそこにはありません。これらのインデックスを手動で再構築する場合は、再実行できます。
$ Sudo /etc/cron.daily/mlocate
ただし、find
などのコマンドを使用してホームディレクトリ内のファイルを見つける方がよいでしょう。
$ find ~ -iname "[^.]*" | head -10
/home/saml
/home/saml/isql_issue.txt
/home/saml/bbbb
/home/saml/script_name.sh
/home/saml/go_figure_book
/home/saml/go_figure_book/readme.txt
/home/saml/go_figure_book/lstopo.txt
/home/saml/go_figure_book/who_breaks_out.bash
/home/saml/hdat2
/home/saml/hdat2/hdat2_v50.iso
グラフィカル検索ツールにも興味があるかもしれません。 Catfishと呼ばれるそのようなツールの1つをカバーする、他のU&L Q&Aというタイトルの GTKフロントエンドのLocate を見てください。このツールは、locate
データとfind
コマンドの両方を利用できます。
別のアプローチを取ることもできます。
locate "My file" | grep '/home/jack' | grep -v '/\.'
何をしようとしているのかわかりません。 -i
フラグを使用して大文字と小文字を区別せず、正規表現はあまり具体的ではありません。/home/jack
の下にあり、MY
、My
、my
を含むすべてのファイルまたはフォルダーを検索する必要があります、またはmY
ファイル名の任意の場所。もしそうなら、ただ走る
locate -i my | grep '/home/jack' | grep -v '/\.'
これは動作するはずです-非表示になっていないファイルとフォルダのみに一致します:
find /home/jack -name "[^.]*My.*"
さらにシンプル-これは、ディレクトリツリーのどこにも隠しディレクトリがないファイルと一致します。おそらくこれはあなたが望むものです:
for f in /home/jack/**/*My.*
do echo "$f" # or do any other command
done