web-dev-qa-db-ja.com

ロケートで隠しファイルを除外する

UbuntuがありますNAS共有SMBとNetatalkをいくつかのMacで使用し、locateを使用してファイルを検索します。残念ながらNetatalkをインストールしてからたくさんの.AppleDouble AFPと高速に共有するキャッシュファイル(私が想定)と私のlocateはその情報をすべて出力します。偶然ファイルにcpを常に使用しているのは、偶然に役に立たない隠しファイルをコピーしたことを見つけるためだけです。

私はlocate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._"これらの隠しファイルを削除しますが、bashrcを変更して、これが多かれ少なかれデフォルトになるようにします。

印刷場所から隠しファイルを除外する最も効果的な方法は何ですか?正規表現で?今は、示されているように引数を検索してgrepにパイプするスクリプトを記述しますが、もっと簡単な方法がある場合はお知らせください。

4
ezgoodnight

Locateを使用しているときに隠しファイルを除外するには、これを試してください:

locate -i --regex "^/absolute/path/to/the/directory/[^\.]+"

ディレクトリに.hidden..hidden...hidenなどのファイルが含まれている場合、それらも除外されます。 .hiddenのみを除外する場合は、+を最後から削除します。

locate -i --regex "^/absolute/path/to/the/directory/[^\.]"

または単に(拡張正規表現も必要ありません):

locate -ir "^/absolute/path/to/the/directory/[^\.]"

編集:質問を編集した後、質問の全体的な意味が変わり、変更されたコンテキストでは私の最初の回答が正しくありません。以下を実行して、locateの出力からすべての隠しファイルを除外します(ファイル名に/が含まれていない場合):

locate -i "file_name" | egrep -v "/(\.)+[^/]+$"
4
heemayl