最新記事

指定されたファイルからディレクトリツリーチェックサムを続行する
bash
find
hashsum
checksum
integrity

指定されたファイルからディレクトリツリーチェックサムを続行する

私は持っています: checksum.txtマウント後に接続が切断され、不完全なままの大規模ディレクトリのマウントポイントにある単一ファイルの複数行チェックサムを含むファイル(checksum.txt部分チェックサム) localchecksums.txt数千行のSHA256チェックサム、ファイル名などを含む完全なチェックサムリスト 私の考えでは: リモートインストールチェックサムをローカルチェックサムsha256sum -c checksum.txt localchecksum.txtまたは同様のものと比較します。ただし、次のようにしてください。 残りのハッシュを取得するために再びギガバイトのデータを処理したくありません。 プロセス全体を再起動したくありません。checksum.txt find再帰を使用して単一のファイルを見つけてsha256sum実行することによってリストを生成します。 残りのハッシュは、2つのファイルを比較することによって取得するか、ファイルをchecksum.txt読み取り、未確認ファイルのチェックサムのみを計算することによってチェックサムをチェックし続けることができます。最初のアプローチの問題は、ファイルの順序が異なることです。 2番目の方法は良いと思いますが、どのように始めるべきかわかりません。 チェックサムファイルの例: 8e2931cc1ad3adc07df115456b36b0dbd6f80f675e0a9813e20ad732ae5d4515 ./folder/8ggSHp5I7hNEl3vDCbWv6Q/wA-KzXIh1Ce3G93s20X24v_4vUeywBe3mXPhGjPt_Lg/cRf8KgbqIsqwbon3DX3PN1-oV6_Nr9Baeymaw-ZJw00 37d2dfe2315cc401536329e3fbe421384bbb50c656c3dbeb42798e5666822e6c ./folder/8ggSHp7I7hHEl3vDCbWv6Q/wA-KzXIh1Ce3G93s2oX24v_4vUeywBe3mXPhGjPt_Lg/V02s6HKhyJ9Nyd2jQtSjWg d0e9b95065a264db0d372ccace5d3a72f38f74ca7b44da4794dae23c91e18e57 ./folder/8ggSHp7I7hNxl3vDCbWv6Q/wA-KzXIh1Ce3G93s2oX24v_4vUeywBe3mXPhGjPt_Lg/U3fhBugX6pexYzh6qGKlW7lYWsFShWH7JwN9fmU8ay2lLZkciH2sXsiGbmIc97iJ 44a5fe29063e472857bb9a1929af06a32bb4b2394630f80c2dc732fd662620bc ./folder/8ggSHp7I7hNEc3vDCbWv6Q/wA-KzXIh1Ce3G93s2oX24v_4vUeywBe3mXPhGjPt_Lg/gTrqUL4ZjWTWMl6BcjfwUe5bBDatscwUoYY9IFQDztc

Admin

検索ツールを使用してシステムパス($ PATH)でファイルを検索するには?あるいは、検索の開始点ディレクトリを式としてどのように指定できますか?
bash
shell-script
find
path
tilde

検索ツールを使用してシステムパス($ PATH)でファイルを検索するには?あるいは、検索の開始点ディレクトリを式としてどのように指定できますか?

たとえば、システム$ PATHの一部であるすべてのディレクトリで特定のバイナリを参照するすべてのシンボリックリンクを探したいとします。すべてのディレクトリを手動で指定すると、これを正常に実行できます。 sudo find ~/bin /home/samokat/.local/bin /home/samokat/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin -lname /opt/openoffice4/program/soffice しかし、 $PATH 拡張でコマンドを使用しようとすると、次のようになります。 sudo find `echo $PATH | tr ':' ' '` -lname /opt/openoffice4/program/soffice エラーと結果が表示されます。 find: ‘~/bin’: No such file or directory /usr/bin/soffice.link-to-openoffice-bak echo $PATH | tr ':' ' ' 正しいパスを出力してください。 ~/bin /home/samokat/.local/bin /home/samokat/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin 以下も機能しません。 sudo find `echo $PATH | tr ':' ' ' | xargs` -lname /opt/openoffice4/program/soffice sudo find { `echo $PATH | tr ':' ' ' | xargs` } -lname /opt/openoffice4/program/soffice sudo find eval "echo $PATH | tr ':' ' ' | xargs" -lname /opt/openoffice4/program/soffice echo $PATH | tr ':' ' ' | xargs | sudo find -lname /opt/openoffice4/program/soffice # runs some long computation starting pointディレクトリを計算されたパラメータにどのように渡すことができますかfind?可能ですか?

Admin

検索を使用したファイルの移動とクリーンアップ
bash
files
find

検索を使用したファイルの移動とクリーンアップ

セキュリティカメラの多くのファイルを含むNAS / Homelabサーバーとして使用されるDebian GNU / Linux 12(bookworm)x86_64サーバーにフォルダがあります。 MDAlarm_20240301-091804.jpg ... MDAlarm_20240316-153813.jpg MDAlarm_20240327-183713.jpg (たとえば)を使用してファイルを移動しようとすると、mv snap/*.jpg /path/to/dest/2024/03次の結果が表示されます。 -bash: /usr/bin/mv: Argument list too long 私は次のことを考えていました。この回答 find snap -name '*202403??-??????.jpg' -exec mv -t /path/to/dest/2024/03 {} +はい、しかし年と月に適したフォルダを作成するために「1行」はありますか? 写真を見て並べ替えるためにSamba共有に移動しています。

Admin

引数で find コマンドを書く
bash
shell-script
find
zsh

引数で find コマンドを書く

多くの場合、ファイルを見つける必要がありますが、次のようにファイル名が何であるかわかりません。 $ find -iname '*foo*' -o -iname '*bar*' -o -iname '*blah*' ちょっと退屈です。次のように使いやすいエイリアスを作成したいと思います。 $ findany foo bar blah 私の試みは次のとおりです。 findany() { args=("-iname" "'*$1*'") shift while [ $# -gt 0 ]; do args+=("-o" "-iname" "'*$1*'") shift done find ${args[@]} } 問題は、ファイルがすぐそこにあっても結果がまったく生成されないことです。 $ ls bar.txt blah.txt foo.txt $ findany foo bar blah # nothing echoコマンドの前に追加すると正しく表示されます。 $ findany foo bar blah find -iname '*foo*' -o -iname '*bar*' -o -iname '*blah*' 上記の出力をコピーして実行すると正常に動作します。 $ find -iname '*foo*' -o -iname '*bar*' -o -iname '*blah*' ./bar.txt ./foo.txt ./blah.txt パラメータの分割や引用に関連しているようですが、どのようにデバッグするのかわかりません。 私は主にzshを使用していますが、bashでも同じ動作を確認しました。

Admin

名前がマスクに一致するファイルまたはファイルへのシンボリックリンクの検索
find

名前がマスクに一致するファイルまたはファイルへのシンボリックリンクの検索

検索に使用していますsudo find / -name gcc*。複数のディレクトリを返しますが、私はファイルだけを望んでいます。しかし、追加すると、-type f私が望むシンボリックリンクはリストされません。ディレクトリをフィルタリングしてシンボリックリンクを維持する方法は? また、ワイルドカードを使用してもサポートされていないワイルドカード*というファイルをリストできないことがわかりましたgcc-10。findこれを行うことができる他のユーティリティはありますか?

Admin

xargsを使用してファイルを削除すると、No such file or Directoryがたくさん印刷されます(ただし動作​​するようです...)。
find
xargs
delete

xargsを使用してファイルを削除すると、No such file or Directoryがたくさん印刷されます(ただし動作​​するようです...)。

N分より古いファイルを削除するスクリプトがあります。スクリプトはデフォルトで次のように実行されます。 find /some-folder/* -mmin +59 | xargs rm -rf しかし、何らかの理由で、次のような内容がたくさん印刷されます。 No such file or directoryしかし、仕事が完了したようです。以下の例をご覧ください。 $ du -hs /opt/storage/ 5.2G /opt/storage/ $ find /opt/storage/* -mmin +59 | xargs rm -rf find: /opt/storage/caches/modules-2/files-2.1/org.jboss/jboss-parent: No such file or directory find: /opt/storage/caches/modules-2/files-2.1/redis.clients: No such file or directory find: /opt/storage/caches/modules-2/files-2.1/org.infinispan: No such file or directory ... $ du -hs /opt/storage/ 4.0K /opt/storage/ findxargs存在しないファイルを見つける原因のアイデアはありますか?ある種の競合状態があるため、ファイルが発見/ログに印刷される前に何らかの方法で削除された可能性がありますか? おそらく関連があるかもしれません: https://www.linuxquestions.org/questions/linux-newbie-8/find-exec-with-rm-gives-unnecessary-error-747473/#post3646393 しかし、解決策はxargs私がやっていることを使うことです。 修正する:以下のコメントによると、ファイルを削除すると親フォルダの修正時間が更新されるのが問題のようです。さらに、削除プロセス中に同じ親/開始フォルダの下にファイルとフォルダが作成されることがあります。 この記事には次の例があります。 https://stackoverflow.com/a/13869000/363603 代わりに使用してくださいctime。しかし、以下から: https://www.webservertalk.com/linux-touch-command 変更時刻ファイルのメタデータ、属性、またはコンテンツが最後に変更された時刻。 これは同じ問題を引き起こします。 find以下で使用できる場合--time=birth: https://unix.stackexchange.com/a/567590/11740 これはおそらく最も強力なソリューションです。しかし、これまでこれの例を見つけることができませんでした。 もしそうなら、Linuxには、スタートアップフォルダでファイル保存を繰り返し(日付しきい値に基づいて)繰り返し実行する「標準」方法はありません。一方、サブツリーの一部は削除/保存中に更新できますか? 現在のソリューション: これまでに見つかった内容に基づいて、削除するすべてのファイルを検索し、削除を実行するように分類しました。 # Store path to all files that should be deleted (potentially a lot!) FILES_TO_DELETE=$(find /some-folder/* -mmin +59) # Delete the file rm -rf $FILES_TO_DELETE

Admin

再帰 grep は特定の行番号のみ一致します。
awk
grep
find
ripgrep

再帰 grep は特定の行番号のみ一致します。

特定のパターンを含むファイルを見つける方法特定の行番号に? 3行のテキストファイルを含むディレクトリがあるとします。たとえば、次のようになります。 Title A Category X Description Y Category Xすべてのオンラインファイルをgrep /フィルタリングする方法は2?Title Aas行を含むファイルをどのように見つけることができますか1? grepのマニュアルページ、ripgrep、および代替案を見てきましたが、パターン検索を特定の行番号に制限することが可能かどうかはわかりません。

Admin

フォルダ内のすべてのzipファイルを繰り返し削除します。
bash
command-line
find
delete

フォルダ内のすべてのzipファイルを繰り返し削除します。

/mnt/drive1/tempフォルダとサブフォルダ内のすべてのzipファイルを再帰的に削除しようとしています。 ここで、間違ったコマンドが災害の結果を引き起こす可能性があることを知っているので、正しい形式があるかどうかを確認したいと思いました。 find /mnt/drive/temp -type f -name '*.zip' -delete このコマンドは私が望む効果を得ることができますか?

Admin

node_modulesというサブディレクトリを除き、node_modulesという名前のすべてのディレクトリを探します。
grep
find

node_modulesというサブディレクトリを除き、node_modulesという名前のすべてのディレクトリを探します。

私の開発ルートディレクトリからすべてのディレクトリを探したいですnode_modules。問題は、それnode_modules自体にというサブディレクトリが含まれていることですnode_modules。最上位node_modulesフォルダだけを見つける方法は?私は試した: find -iname "node_modules" | grep -P 'node_modules.*(?!node_modules)' ただし、サブディレクトリはフィルタリングされません。

Admin

ファイルごとに 1 行ずつ再帰的にフルパスのリストを取得するにはどうすればよいでしょうか? 質問する
bash
command-line
find
ls

ファイルごとに 1 行ずつ再帰的にフルパスのリストを取得するにはどうすればよいでしょうか? 質問する

再帰的な 1 行に 1 つのパスのフラットなリストを出力するにはどうすればよいですか? たとえば、ファイルの完全なパスを含むフラットなリストが欲しいだけです: /home/dreftymac/. /home/dreftymac/foo.txt /home/dreftymac/bar.txt /home/dreftymac/stackoverflow /home/dreftymac/stackoverflow/alpha.txt /home/dreftymac/stackoverflow/bravo.txt /home/dreftymac/stackoverflow/charlie.txt ls -a1ほぼ必要なことはできますが、パスのフラグメントではなく、完全なパスが必要です。

Admin

ファイル名がファイルに含まれる文字列と一致するファイルの削除
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