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

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

2
どのようにすれば、すべてのファイルを同じファイル名プレフィックスを持つディレクトリに移動(またはコピー)できますか?
Bashの使用 たとえば、親ディレクトリにランダムに配置された一連のファイルがあるとします。~/src特定のサフィックスに一致するすべてのファイルを取得し、それらを~/distディレクトリに移動(またはコピー)したいとします。 この目的のために、すべてのファイル名に次の命名規則があると仮定します。 <filename_prefix>.<filename_suffix> これが特定のファイルをすべて取得filename_suffixしてdistフォルダーに配置する簡単な方法であることがわかりました。 mkdir ~/dst find source -name "*.xxx" -exec mv -i {} -t ~/dst \; ここでさらに一歩...この場合filename、findの出力を使用して、を使用しfilename_prefixて同じ名前のディレクトリを生成し、~/distそのプレフィックスを持つすべてのファイルを適切なディレクトリに移動(またはコピー)する方法を教えてください。 mkdir ~/dst find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \; 基本的に、上記のコマンドを変更(または別のコマンドを使用)して、次のような構造を作成するにはどうすればよいですか。 (出力) ~/dist/people/people.xrt ~/dist/games/games.xrt ~/dist/games/games.moo ~/dist/games/games.ini ~/dist/monkeys/monkeys.ini ~/dist/monkeys/monkeys.xrt このようなディレクトリツリーから? (入力) ~/src/xrt/people.xrt ~/src/xrt/games.xrt ~/src/conf/games.ini ~/src/pack/monkeys.xrt ~/src/e344/games.moo ~/src/e344/monkeys.moo ~/src/en-us/monkeys.ini

3
単一のコマンドでサブディレクトリ内のファイルを見つけてファイル名で並べ替える方法は?
を使用した通常の検索の結果find . ! -path "./build*" -name "*.txt": ./tool/001-sub.txt ./tool/000-main.txt ./zo/001-int.txt ./zo/id/002-and.txt ./as/002-mod.txt と並べ替えるとsort -n: ./as/002-mod.txt ./tool/000-main.txt ./tool/001-sub.txt ./zo/001-int.txt ./zo/id/002-and.txt ただし、望ましい出力は次のとおりです。 ./tool/000-main.txt ./zo/001-int.txt ./tool/001-sub.txt ./zo/id/002-and.txt ./as/002-mod.txt つまり、出力はファイル名のみに基づいてソートされますが、フォルダー情報は出力の一部として維持する必要があります。 編集:サブディレクトリ構造に複数のレベルが含まれる場合があるため、例をより複雑にします。
9 find  filenames  sort 

6
リストから欠落しているファイルを見つけるにはどうすればよいですか?
ファイルシステムに存在するかどうかを確認したいファイルのリストがあります。私はこれを次のfindように使用することを考えました: for f in $(cat file_list); do find . -name $f > /dev/null || print $f done (を使用zsh)が、ファイルが見つかるかどうかにかかわらずfind終了0するように機能しない。私はかどうかを確認するためにテストするいくつかの他のテストを通してそれを渡すことができると思いますfind任意の出力を生成し(粗製のだが効果を置き換えることであろう> /dev/nullと|grep '')が、ヤギをキャッチするためにトロールを使用してのようなこの感触は(他の国籍の方は大ハンマーとクルミについて何かを言うかもしれません)。 find有用な終了値を強制的に取得する方法はありますか?または、少なくとも見つからなかったファイルのリストを取得するには?(後者は、論理的な接続詞を巧妙に選択することでおそらくより簡単になると想像できますが、それを理解しようとすると、常に結び目に縛られているようです。) 背景/動機:「マスター」バックアップがあり、削除する前にローカルマシン上のいくつかのファイルがマスターバックアップに存在することを確認したい(少しスペースを作成する)。そのため、ファイルのリストを作成し、sshそれらをマスターマシンに送りましたが、不足しているファイルを見つけるための最良の方法を見つけ出すことに途方に暮れました。
9 find 

3
xargs引数を文字列として '>'を使用して別のコマンドに渡しますか?
にたくさんのファイルがあるとします/tmp/。 私がやります find . -type f | xargs -iFILES そしてmd5sum、各ファイルでaを実行して、同じ名前で.md5拡張子を付けたファイルに出力します。 find . -type f | xargs -iFILES md5sum FILES > FILES.md5 これは、findコマンドで見つかったファイルごとにmd5ファイルを作成することになっています。代わりに、すべてのファイルのチェックサムを使用して、ディスク上に単一のFILES.md5ファイルを作成します。 md5sumコマンドに、FILESが現在のファイル名を表し、FILESリテラル文字列ではないことをどのように伝えますか?

5
特定のフォルダー内のすべてのgitリポジトリを見つける方法(高速)
素朴なアプローチはですがfind dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {} 、gitリポジトリ内に多くの深いフォルダ構造があるため、私には遅すぎます(少なくともこれが理由だと思います)。prune何かが見つかると、findがディレクトリに再帰するのを防ぐために使用できることを読みましたが、2つあります。私は確かにどのようにこの作品(私は何を理解していないわけではないよprune、それが妨げられるので、私はmanページを読んだもののん)と第二は、それは私の場合は動作しないでしょうfindに再帰する.gitフォルダすべてではないに他のフォルダ。 だから私が実際に必要なのは: すべてのサブディレクトリについて、それらに.gitフォルダが含まれているかどうかを確認し、フォルダがこのファイルシステムブランチでの検索を停止して結果を報告します。これにより、非表示のディレクトリも検索から除外されれば完璧です。
9 find  git 

4
ファイル内の単語をGrepしてからファイルをコピーする
ファイルのコレクションがあります(* .zip、*。txt、*。tar.gz、*。doc、... etc)。これらのファイルはパス内にあります。すべてのファイル(* .txt)を検索し、特定の単語を含むテキストファイル(たとえば、LINUX / UNIX)のみをコピーしたい。 私は以下を実行しました: find . -name "*.txt" | grep 'LINUX/UNIX' このコマンドはすべてのテキストファイルを見つけることができ、 "grep"は 'LINUX / UNIX'を含むテキストファイルのみを一覧表示することにより、結果のテキストファイルをフィルター処理しました。 これらの最終的なファイル(つまり、 'LINUX / UNIX'を含むテキストファイル)を特定の選択したパスにコピーするにはどうすればよいですか? 応募してみました xargs find . -name "*.txt" | grep 'LINUX/UNIX' | xargs cp <to a path> しかし、それはうまくいきませんでした

2
find -execのifコマンド
私は現在のディレクトリの下にあるすべてのディレクトリとファイルを一覧表示し、それらがファイルまたはディレクトリである場合は、次のコマンドで書き込もうとしました: find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \; 私はそれがばかげたコマンドであることを知っています、-type fまたはのような他のものを使用できます-type dが、そのコードの一部が期待どおりに機能しなかった理由を知りたいです。それらすべてにディレクトリを出力するだけです。たとえば、出力findは次のとおりです。 . ./dir ./dir/file 私のコードの出力は: . : directory ./dir : directory ./dir/file : directory そしての出力 echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo …

7
現在のディレクトリで検索を使用しているときに「find:。:No such file or directory」
Findコマンドがまったく機能しないようです。たとえば、私は絶対にindex.phpという名前のファイルがあるディレクトリにいて、これを実行します: [root@server htdocs]# find . -name "index.php" find: .: No such file or directory 私は常にそのようなファイルやディレクトリのエラーは発生しません。 定義するパスや検索するファイルに関係なく、常にこのエラーが発生します。私は非常に単純なものを見落としていると確信しています。誰かが私が間違っていることを指摘できますか? [root@server htdocs]# pwd /srv/www/htdocs [root@server htdocs]# type -a find find is /usr/bin/find [root@server htdocs]# ls -la | grep index.php -rw-rw-r-- 1 andris users 413 Sep 1 2013 index.php [root@server htdocs]# find . -name "index.php" …
9 find 

2
検索でNFSディレクトリを除外する方法は?
ユーザーまたはグループのないファイルを検索する必要があります。 find / -nouser -o -nogroup これは大丈夫だと思います。しかし、NFS共有を検索したくありません。findコマンドでNFS共有を除外するにはどうすればよいですか?
9 find  nfs 

6
サイズで画像を検索:find / file / awk
私は一定の高さ(500px以上)のpng画像ファイルを見つけようとしています。私はそれfileが画像の寸法を返すことを知っています。例: $ file TestImg1a.png TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced しかし、私はこれを使用して、高さが500pxを超えるディレクトリ内のすべてのファイルを検索する必要があります。高さに関係なくすべてのファイルを印刷する方法を知っています。 find . -name '*.png' | xargs file | awk '{print $7 " " $1}' しかし、どうすれば$ 7を500を超える結果に制限できますか?
9 files  find  awk  xargs  images 

7
ファイル拡張子をクリーンアップする方法は?
拡張子を.mp3に変更したい.MP3ファイルを含むディレクトリがあります。これを行う最も簡単な方法は何ですか?私は次のように考えています: find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \; ...私はそれが正しくないことを知っていますが。:)置換は正しくなくmv、a sedと-execinでコマンドの両方を使用する方法がわかりませんfind。 これにはbashスクリプトが必要ですか?
9 shell  find  rename 

6
フォルダーと同じ名前のファイルを含むフォルダーのみを検索します
同じ名前(および拡張子.md)のマークダウンファイルを含むすべてのサブフォルダーを検索します。 例:次のサブフォルダーを検索したい: Apple/Banana/Orange #Apple/Banana/Orange/Orange.md exists Apple/Banana #Apple/Banana/Banana.md exists Apple/Banana/Papaya #Apple/Banana/Papaya/Papaya.md exists 注:ディレクトリには他のファイルまたはサブディレクトリが存在する場合があります。 助言がありますか? この問題の解決策は、次のコードを使用してテストできます。 #!/usr/bin/env bash # - goal: "Test" # - author: Nikhil Agarwal # - date: Wednesday, August 07, 2019 # - status: P T' (P: Prototyping, T: Tested) # - usage: ./Test.sh # - include: # 1. …

5
exec '{}'が見つかりません>
Execを使用すると、すべての引数を一度{} +に渡すか、1つずつ渡すことができます。{} \; ここで、すべてのjpegの名前を変更したいとしましょう。問題はありません。 find . \( -name '*.jpg' -o -name '*.jpeg' \) -exec mv '{}' '{}'.new \; しかし、出力をリダイレクトする必要がある場合は、リダイレクト'{}'後にアクセスできません。 find . \( -name '*.jpg' -o -name '*.jpeg' \) -exec cjpeg -quality 80 '{}' > optimized_'{}' \; これは機能しません。forループを使用して、findの出力を使用する前に変数に格納する必要があります。認めましょう、面倒です。 for f in `find . \( -name '*.jpg' -o -name '*.jpeg' \)`; do …
8 bash  find 

2
Bashスクリプトのこの「find」コマンドに混乱しましたか?
私は、意味を説明できなくなった誰かが作成したbashスクリプトを持っています。これは、フォルダーの自動TAR処理とバックアップに使用されます。現時点で私は最後の行で混乱しています: find '/home/_backups/pokebrawl' -mtime +6 -type f -delete 完全なスクリプトは次のとおりです。 #!/bin/bash #Purpose = Backup of Important Data #Created on 17-1-2012 #Author = Hafiz Haider #Version 1.0 #START TIME=$(date +"%m-%d-%Y-%T") FILENAME=pokebrawl-$TIME.tar.gz SRCDIR=/home/servers/brawl/world DESDIR=/home/_backups/pokebrawl tar -cpzf $DESDIR/$FILENAME $SRCDIR find '/home/_backups/pokebrawl' -mtime +6 -type f -delete #END

5
$ find -exec cd =>エラー:=> find: 'cd':そのようなファイルまたはディレクトリはありません
このコマンドを実行すると、機能します。 $ find . -inum 888696 -exec ls '{}' \; Conversation.pst Outlook Data File Outlook Data File.sbd Trash Unsent Messages Inbox.pst Outlook Data File.msf Sent.pst Trash.msf Unsent Messages.msf ただし、それを置き換えるlsと機能cdしません: $ find . -inum 888696 -exec cd '{}' \; find: ‘cd’: No such file or directory 私cdはbash組み込みであることを知っているので、これも機能しない次のことを試しました: $ find . -inum …
8 bash  find  cd-command 

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