タグ付けされた質問 「find」

検索に関する質問については、ディレクトリ階層内のファイルを検索するコマンドラインユーティリティ。このタグは、find自体に関する質問や、findコマンドラインユーティリティの使用から発生する問題に関する質問に使用します。

2
find / rm -iname '* phpmyadmin'がphpMyAdmin-Version-XYZ.zipを削除しないのはなぜですか?
私はこの次のコードを持っています: find ./ -iname '*phpmyadmin' -exec rm -rf {} \; これはと呼ばれるディレクトリが削除されますphpmyadminが、それはしませんというファイルを削除しますphpMyAdmin-Version-XYZ.zip を削除し-rfても削除されません(おそらく、-inameの2番目の問題が大文字と小文字の区別に影響を与えていないためです)。 単一のrm(ファイル、ディレクトリ、ソフトリンク)のiノードを削除する方法はありますか? を追加し-inameても効果がないのはなぜですか? 注:「inodeを削除する」という引数はで見つかりませんでしたman rm。
8 find  rm 

2
検索からgrepへのパイプ
私は何をしようとしていますか? プロジェクト内の他のファイルで必要とされていないファイルを探すコマンドを記述します。 何を試しましたか? findファイル名のリストを取得するために使用しています。次に、検索するファイルではなく、ファイル名を検索文字列として使用します。 私はfind server/lib -type f -exec basename {} \; | cut -f 1 -d '.'ファイル名のリストを取得し、ファイル拡張子を取り除くために使用しています。 これgrep -R --exclude-dir=node_modules <search-string> . -lが、各ファイル名をパイプしたいものであることはわかっていますが、それらを<search-string>引数として渡す方法がわかりません。 他の情報 また、これにパイプするgrepと、find明らかにしたくない(ファイルのリスト全体)の結果全体が渡される可能性があることも漠然と認識しています。 また、(これはおそらくこの質問の範囲内ではありませんが)grep何も見つからないファイル名を見つける方法としてこれを使用しているので、この種の出力を取得するためのアドバイスは大歓迎です > <the-command> filename1 server/lib/foo.js # where these are the list of files in which it appears test/lib/foo.js filename2 Not Found! #where `filename2` wasn't …

2
最大50 TBのファイルシステムで最も古いファイル/ディレクトリを検索
90 TBのファイルシステムから最大50 TBの最も古いファイルと関連するディレクトリを見つけて、それらを別のファイルシステムに移動する必要があります。ファイルが何であるかを識別するため、ディレクトリ構造を保持する必要があります。そう - 第1レベル/第2レベル/第3レベル/(ファイル) 構造です。その構造全体を移動する必要があります。トップレベルのディレクトリには何もありませんが、それらがないと、探しているすべてのファイルが同じ名前であるため、ファイルが属しているファイルを特定できません。プロセスが完了すると、元のファイルシステムに約40 TBが残り、新しいファイルシステムにはほとんど何も残っていないはずです。これは、元の最も古いファイルが残っているためです。 ありがとう!
8 linux  find 

1
findに最初の作業ディレクトリを復元しないように指示できますか?
findsudo -u最初の作業ディレクトリがユーザーに表示されない場合、後ろで実行すると「最初の作業ディレクトリを復元」できません。これにより、findは常に迷惑なPermission denied警告メッセージを出力します。 $ pwd /home/myuser $ sudo -u apache find /home/otheruser -writable find: failed to restore initial working directory: Permission denied findがこのメッセージを印刷しないようにする最良の方法は何ですか? 1つの方法は、findを実行するcd /前に、findユーザーが復元できるディレクトリ(など)に変更することです。理想的には、などの検索オプション--do-not-restore-initial-working-directoryが欲しいのですが、それは利用できないと思います。;) 私は主にRedHatベースのディストリビューションを使用しています。
8 linux  find  sudo 

1
このfind -execdir {} +(プラス)を使用すると、なぜ3回ではなく4回の呼び出しで終了するのですか?
ここで、末尾までパイプすることでcommandin の呼び出し回数を数えることができることを読みました。-exec command {} +| wc -l 私はそれ-execdirが異なっていることを理解していますが、その中で、一致するすべてのサブディレクトリがfind検出さcommandれると、サブディレクトリに一致するファイルが複数ある場合、それが含まれているサブディレクトリからの呼び出しが実行されます。呼び出しの数が、一致するサブディレクトリの数と等しくなり、それらのサブディレクトリ内の一致するファイルの数と一致する呼び出しの数ではないのですか? 次を実行すると、最終的に後者になります。 $ find . -name "bob*" -execdir echo {} + | wc -l execdir command {} +前者がそうであるべきであると州のマニュアルページ: 同じように-exec行動、+の形は-execdirより1つのマッチファイルよりもプロセスへのコマンドラインが、任意の特定の呼び出し構築するcommand同じサブディレクトリに存在する唯一のリストファイル意志を。 すなわち 私は得ています: ./file1inDir1 ./file2inDir1 ./file3InDir2 ./file4InDir3 私がこれを期待しているとき、manページに基づいて: ./file1inDir1 ./file2inDir1 ./file3InDir2 ./file4InDir3
8 find 

4
スペースがあるgrep出力でxargs grepを実行するにはどうすればよいですか?
正規表現に基づいてファイルを検索してから、それらのファイルのコンテンツを検索しようとしています。たとえば、私は次のようなものを持っています #Find all C++ files that match a certain pattern and then search them find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>" 私が遭遇している問題は、いくつかのパスにスペースが含まれていることですxargs。だけを使用している場合はfind、-print0引数を(-0引数on と共にxargs)使用して、xargsがスペースを区切り文字として扱わないようにすることができます。同様のものはありgrepますか? それとも、この問題に完全に間違った方法で取り組んでいますか?単純に、findto は私grepにxargs grepは理にかなっていますが、同じ結果が得られる他のアプローチを受け入れます。
8 shell  grep  find  quoting  xargs 

3
GNU findで「有効になっている機能」とはどういう意味ですか?
find --versionGNU findで使用すると、次のような結果になります。 find (GNU findutils) 4.5.9 [license text] Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2) これらの「機能」とはどういう意味ですか?いくつかの参照がありますO_NOFOLLOWでのセキュリティ対策であることはman find、との言及がありますLEAF_OPTIMISATIONいくつかの節約最適化されてlstatリーフノード上の呼び出しが。しかしFTS、D_TYPEやについては何も見つかりませんCBO。
8 find  gnu 

6
空の文字列はいつ現在のディレクトリを示していますか?
次のようfindに、現在のディレクトリでいくつかのファイルを収集するために使用するスクリプト $ find . -name "*.h" ./foo.h 今、私はそれをプレフィックスfoo.hなしで単に出力したいと思い./ます。空の文字列""はシェルコマンドの現在のディレクトリを表すと思いました。しかし、これは与える: $ find "" -name "*.h" find: ftsopen: No such file or directory だから私は間違っていました。今私の質問は、いつ/どのように/どこで/ ..「空の文字列(?)」は、ファイル名またはパス名を期待するコマンドの現在のディレクトリを示していますか?きちんとした啓発的な説明はありますか? サイドの質問は、検索つべこべは、上記のラ・文字列操作なしで、簡単に解くことができるかどうかである${parameter#word}かcutまたはsed?
8 find  filenames 

2
いつ `見つけるか。-exec COMMAND {} + `COMMANDを複数回実行しますか?
私が行った場合 find . -exec echo {} + すべてのパスを1行で出力しますecho。つまり、コマンドは1回だけ実行されます。 しかし、によるとman find、 -exec command {} + ... the number of invocations of the command will be much less than the number of matched files. ... 状況によっては、コマンドが複数回実行されるようです。私は正しいですか?例示してください。
8 find 

1
これは、「find…-exec sh -c '…' sh {} +」を使用してコマンドをどのように機能させるのですか?
@StephaneChazelasがこのQ&Aに次の解決策を投稿しました:「find -exec {} +」の使用に問題があります。 $ find . -iname "*.extension" -exec sh -c ' exec <command> "$@" <additional parameters>' sh {} + ここで何が起こっているのですか?具体的には、最後sh {}は何をしますか?それは、-exec何かすることがあるように、NOOPであるように、findのコマンドを鎮静化するためだけにあるかのようです。 私はecho {}そこに簡単に置くことができ、それはうまく機能しているようです。

2
変更時間でファイルをソートする
私はここで多くの質問と回答を見て、 list_dir=`ls -t /path/to/dir/` for i in $list_dir; do または ls -t | while read i; do 簡単に壊れるので、スクリプトでlsを使用しないでください。しかし、最後に変更されたものから最後に変更されたもの(またはその逆)の順にファイルを操作するためのより良い方法を見つけることができません。 私は次のようなものを使用できます: find . -type f -printf '%T@ %p\n' | sort -n | cut -d ' ' -f 2- | while read i; do... ...しかし、これは名前に改行が含まれているファイルでは壊れ、起動するのが非常に醜いです。もっと良い方法はありますか?

2
指定されたタイムスタンプよりも新しいすべてのファイルをリストし、それらを並べ替えます
タイムスタンプよりも新しいすべてのファイル(日付順)を20130207003851ディレクトリ/ tmpのみの形式で一覧表示したい。サブディレクトリは省略できます。 SUSE Linux Enterprise Server 11。 出力フォーマットは S0002948.LOG Feb 7 03:28 S0002935.LOG Feb 7 05:58 S0002952.LOG Feb 7 09:58 S0002940.LOG Feb 7 11:58 find / tmp -newermt "7 feb 2013" -lsは、必要なファイルをリストしますが、 タイムスタンプを20130207003851の形式で使用する方法 出力を並べ替えるにはどうすればよいですか? ファイル名と日付のみを表示するにはどうすればよいですか。最初にファイル名、次に日付? PSタッチを使用して検索用の参照ファイルを作成したくない pss find -newermt "20130207003851" -ls find: I cannot figure out how to interpret `20130207003851' …

3
パッケージマネージャーによってインストールされなかったファイルを検索する
私のGentoo Linuxシステムで、パッケージマネージャー(Portage)によってインストールされなかったすべてのファイルのリストを取得したいのですが。これは、システムをできるだけクリーンに保ち、周りにある不要なファイルをすべて削除したいためです。 私が今までに試したことをお話ししましょう。まず、Portageが追跡するパッケージに属するすべてのファイルのリストを生成します。 equery files "*" | sort | uniq > portage.txt 次に、システム上のすべてのファイルのリストを生成します。ただし、気にしないものを除きます。 find / \( -path /dev -o -path /proc -o -path /sys -o -path /media \ -o -path /mnt -o -path /usr/portage -o -path /var/db/pkg \ -o -path /var/www/localhost/htdocs -o -path /lib64/modules \ -o -path /usr/src -o -path …
8 find  gentoo  symlink 

4
マウントされたntfsシステムで過去2日間のファイルを表示しますか?
2日未満のファイルを表示するコマンドは正確に何ですか?私はこのようなものについて考えました: $ find / -mtime -2 ...しかし、見つかったファイルの日付を印刷する方法がわかりません。私の目標は、マウントされたntfsシステム上のファイルで、過去数日のうちに新しくまたは変更されたものを見つけることです。 さらに、結果を新しいものから古いものに並べ替えると非常に役立ちます。それは可能ですか?

4
現在のディレクトリのシンボリックリンクをリストしますか?
この質問は、現在のディレクトリでディレクトリを見つけることについて話します。解決策は基本的に: ls -d */ それは素晴らしいですが、シンボリックリンクを簡単にリストするにはどうすればよいですか?私は次のようなものを使用する必要がありますか find . -xtype l -d 1 (intended to find symlinks max depth 1 - doesn't work) またはもっと簡単な方法はありますか?これにlsを使用できますか?
8 find  ls  symlink 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.