このコマンドを使用するサブディレクトリの任意の場所にある可能性がある、すべてのファイルを一覧dir1
表示dir2
しようとします。私は成功せずに次のことを試しました。dir3
dir4
cwd
find
find . -type f -regextype posix-egrep -regex 'dir1/.+|dir2/.+|dir3/.+|dir4/.+'
私もposix-extended
それを試しました。このファイルをどのようにリストできますか?
答え1
foo
、bar
およびbaz
3つのフォルダ内のすべてのファイルを検索するには、*.py
次のコマンドを使用します。
find foo bar baz -name "*.py"
dir1
dir2
dir3
したがって、使用したファイルを表示するにはfind dir1 dir2 dir3 -type f
この試みfind . \( -name "dir1" -o -name "dir2" \) -exec ls '{}' \;
答え2
-pathディレクティブを使用する方が良いです。
find . \( -type f -and -path '*/dir1/*' -or -path '*/dir2/*' -or -path '*/dir3/*' -or -path '*/dir4/*' \)
つまり、パスに "dir1"、"dir2"、"dir3"、または "dir4" がある現在のディレクトリ内のすべてのファイルを探します。
答え3
ただみんなに知らせよう。.*/
それぞれを前に追加すると、フルパスと一致しているように見えるdir
ため、問題は解決しました。regex
答え4
ワイルドカード(ホームディレクトリ)と通常のapache2ログディレクトリで定義された複数の場所で特定のファイル(access_log)を見つけ、名前フィルタリングを適用してSSLログとgzipで圧縮された古いログを除外する簡単な(!)例です。これは質問に直接答えるわけではありませんが、これらのガイドラインを探している人(私のような)には便利です。
find / \( -path "*var/log/apache2*" -o -path "*home/*/logs*" \) -type f -name "*access_log" ! -name "*ssl*"
\(
スペース、特に近くのスペースに注意してください\)
。
しかし、私はそれをapachetopで使用して、私のサーバーで最もアクティブなウェブサイトを見つけます。
apachetop -d1 -s9 -p $(find / \( -path "*var/log/apache2*" -o -path "*home/*/logs*" \) -type f -name "*access_log" ! -name "*ssl*" -print | sed 's/^/-f '/)