最新記事

ファイル名がファイルに含まれる文字列と一致するファイルの削除
linux
grep
find

ファイル名がファイルに含まれる文字列と一致するファイルの削除

del.txtランダムに生成された識別文字列のリストを含むテキストファイルがあります。たとえば、次のようになります。 07ckv978yk0 HuinLBoZHcY _oR7ccXiunY ファイル名に識別文字列を含むすべてのファイルを削除したいです。ファイル名20191223_abcdef_07ckv978yk0.jsonは、必ずしも.jsonである必要はないファイル拡張子の直前、ファイル名の末尾に一致する文字列を見つけることができる形式です。各文字列に一致する複数のファイルを持つことはできますが、ファイルに一致する複数の文字列を持つことはできません。 似たようなことを試してみましたが、うまくいくようfind . -type f -name "*" -exec grep -Flf ~/del.txt '{}' \; -printですが、非常に長い時間がかかりました(一致する文字列が2000個で、確認する必要があるファイル名がはるかに多い)。拡張子を指定して作業をスピードアップできますが、ファイル拡張子はさまざまなので、これを行うより賢い方法があることを願っています。

Admin

find -exec bash -c {} +:2つのファイルが1つしか見つからないのはなぜですか?
bash
shell
find

find -exec bash -c {} +:2つのファイルが1つしか見つからないのはなぜですか?

touch 1.txt 2.txt find . -name "[12].txt" -exec sh -c 'echo "${1}"' sh {} + -exec echo {} + ./2.txt ./2.txt ./1.txt echo内部的にsh -c1つのファイルしか出力されないのはなぜですか?今日は、findそれがどのように機能するのか理解していると思います。「find」の-execオプションについてところで今また混乱しています。同じ結果を得ました-exec bash。ティア

Admin

null로 끝나는 파일 경로를 동일한 출력에 두 번 파이프하지만 두 번째는 기본 이름으로 정렬됩니다.
find
perl
sort

null로 끝나는 파일 경로를 동일한 출력에 두 번 파이프하지만 두 번째는 기본 이름으로 정렬됩니다.

따라서 null로 끝나는 파일 이름으로 경로를 인쇄하는 스크립트가 있다고 가정해 보겠습니다 find. 또한 각 경로가 기본 이름별로 정렬된 다른 버전의 출력을 인쇄하고 싶습니다. 다시 실행 하지 않고 이를 달성 find하고 두 출력을 마치 단일 출력인 것처럼 동일한 명령으로 파이프하고 싶습니다. 나는 이것이 Perl을 사용하여 수행될 수 있다고 생각하지만, 나는 그것에 익숙하지 않습니다. 고려해야 할 몇 가지 중요한 사항은 다음과 같습니다. 초기 출력은 변경되지 않고 실시간으로 전달되어야 합니다. 즉, 첫 번째 실행 중에 명령은 두 번째 명령에 대한 행을 있는 그대로 출력하고 find입력(예: )이 완료되면 정렬을 위해 캡처해야 합니다. find(또는 0으로 끝나는 경로를 출력하는 다른 프로그램)이 완료된 후 스크립트는 수신된 각 경로를 기본 이름별로 정렬해야 합니다. 정렬 시 경로가 후행 슬래시로 끝나지 않는 한 마지막 문자 /앞의 모든 내용을 무시해야 합니다. 후행 슬래시가 있는 경우 후행 슬래시가 있는 디렉터리가 함께 그룹화되지 않도록 하기 위해 선행하는 필드를 기준으로 정렬해야 합니다. 정렬이 완료되면 원본 출력 후에 정렬된 출력물을 인쇄해야 합니다. 어떻게 하면 쉽게 달성할 수 있나요?

Admin

rsync include 興奮が非常に遅いです。
find
rsync

rsync include 興奮が非常に遅いです。

rsyncパターンに一致するファイルのコピーに使用する場合https://unix.stackexchange.com/a/2503/288916これはうまくいきますが、非常に遅いです。find一致するファイルをすばやく見つけます。 (10倍以上速くなったようです。) これは正常ですか?これに取ることができる措置はありますか? より良い戦略は、検索を使用し、一致する結果のみを1つずつコピーすることです(scpまたは使用rsync)。 コマンド例(このコマンドの機能については、リンクされた質問も参照してください): rsync -am --include='*.pdf' --include='*/' --exclude='*' ~/LaTeX/ ~/Output/

Admin

Pop OSランチャーで「検索」コマンドでディスクパーティションのファイルを取得するにはどうすればよいですか?
find
partition
pop-os
launcher

Pop OSランチャーで「検索」コマンドでディスクパーティションのファイルを取得するにはどうすればよいですか?

場所に「other_jazz」というディスクパーティションがあります/media/sam/other_jazz。 Pop OSランチャーのコマンドは、find「other_jazz」パーティション内のファイルを検索しません。 システム起動時に「other_jazz」パーティションの自動マウントを有効にしました。 findこのパーティション内のデータを取得するためにPop OSランチャーでコマンドを実行するにはどうすればよいですか?

Admin

コマンドの結果を変更するときは、「パスは式の前になければなりません」を探します。
bash
shell-script
find

コマンドの結果を変更するときは、「パスは式の前になければなりません」を探します。

findファイルからディレクトリリストを除外するために実行しようとしています。このファイルは他のコマンドでも使用されるため、ファイル形式に固執しました。つまり、各行には「as is」というディレクトリ名とスラッシュが含まれています。 My Files/ xargsのようなさまざまなアプローチを試しましたが、うまく機能しませんでしたが、ついにブラックリストを前処理して次のパラメータを生成することにしました。 find . -type f $(cat .blacklist.txt | while read -r line; do printf "! -path './%s*' -prune " "$line"; done) ただし、ブラックリストでスペースを含むディレクトリ名が見つかると、次のエラーが発生します。 find: paths must precede expression: `/*'' 何が起こっているのかを調べようとしましたがset -x、ディレクトリ名の一部が個別に参照されているようです。たとえば、リストに「My Files」というディレクトリ名があるとします。set -xファイルに次の特定の行の出力を表示できます。 ++ printf '! -path '\''./%s*'\'' -prune ' 'My Files/' これまではとても良いと思います。ただし、最後に組み立てられたコマンドで出力を見ると、次のようになります。 '!' -path ''\''./My' 'Files/*'\''' -prune 問題は明らかです。ディレクトリ名を二つの部分に分けようと頑張っているということです!しかし、なぜこのようなことをするのか理解できません。私は次のようないくつかのバリエーションを試しました。 printf "! -path './%s*' -prune " "$line" 私はどういうわけかprintfから出てくるときにパスの結果出力が引用されるようにしなければならないと思います。しかし、私はそれらをすべて試しましたが、そのうちの何も動作しません。 printf "! -path \"./%s*\" -prune " "$line" printf "! -path "'./$line*'" -prune " printf "! -path '"./$line*"' -prune " ただし、どちらもディレクトリ名の個々の単語が分割されるのを防ぎません。 私もこれを試しました: printf "! -path ./%s* -prune " "$line" これにより、ディレクトリ名が分割されるのを防ぐことができますが、参照されなくなり、そのパスの下のすべてのサブディレクトリに展開されます。これは間違っており、今では必要なサブディレクトリが1つしかないため、コマンドも中断されます。 %s別のパラメータを使用してパラメータprintfを%s直接使用しても問題にならないようです。$line

Admin

findを使用するときは、親ディレクトリをサブディレクトリの一部としてリストしないでください。
find

findを使用するときは、親ディレクトリをサブディレクトリの一部としてリストしないでください。

次のような状況があるとしましょう。 $ find ./src -name '*.txt' ./src/file1.txt ./src/subdir1/file2.txt ./src/subdir1/subsubdir1/file3.txt ./src/subdir2/file4.txt 検索しているディレクトリを除外したいと思います。次のようになります。 ./file1.txt./src/file1.txt ./subdir1/file2.txt待つ代わりに./src/subdir1/file2.txt。 追加しても-mindepth 1効果はありません。 私が欲しいものを純粋にできますかfind?

Admin

findコマンドの各結果に対してwcをどのように実行しますか?
bash
find
wc

findコマンドの各結果に対してwcをどのように実行しますか?

このコマンドを使用して、見つかった各ファイルに数行があることを確認したいと思いますfind。 私はこれを使用してwc -l単一のファイルの行番号を見つけることができることを知っています。ただし、次の出力でパイプするときは機能しませんfind。 find -type f -name package.json | wc -l これにより、見つかったファイルの数が返されます。見つかった各ファイルの行数を返したいです。

Admin

-nameまたは-regexを使用してディレクトリが見つからないのはなぜですか?
find
pattern-matching

-nameまたは-regexを使用してディレクトリが見つからないのはなぜですか?

ディレクトリがあります~/Documents/machine_learning_coursera/。 注文する find . -type d -name '^machine' 何も見つかりません 私も試しました find . -type d -regextype posix-extended -regex '^machine' 何も一致せず、文字列の先頭に一致します。 私も次のことを試しました-name。 find . -type d -regextype posix-extended -regex -name '^machine' エラーが発生しました。 find: paths must precede expression: `^machine' 私がここで何を間違っているのか?

Admin

再帰なしで検索する 質問する
unix
find
shell

再帰なしで検索する 質問する

findサブディレクトリに再帰しないような方法でコマンドを使用することは可能ですか? たとえば、 DirsRoot |-->SubDir1 | |-OtherFile1 |-->SubDir2 | |-OtherFile2 |-File1 |-File2 そして、次のような結果find DirsRoot --do-not-recurse -type fになるでしょうかFile1, File2?

Admin