最新記事

ファイルを読み取るためにhexdumpを使用すると、findのスパース値(%S)が変更されるのはなぜですか?
find
sparse-files
lustre

ファイルを読み取るためにhexdumpを使用すると、findのスパース値(%S)が変更されるのはなぜですか?

私はLustreファイルシステムを使用しています。%Sファイルのfind()の希少値を見た後、を使用してそのファイルを印刷してからfindの希少hexdump値を見直すと、時々find(%S)の希少値が変わることがわかりました。なぜ変わったのですか? %Sまれな値を探す()コマンドを使用してファイルを表示するmyvideo.mp4: find myvideo.mp4 -printf "%S" myvideo.mp4ファイルを読み取るには、次のコマンドを使用しますhexdump。 hexdump myvideo.mp4 複数のファイルでこの動作が見つかりました。検索( )の希少値の変更例%S: 0.000135559到着0.631297 0.00466808到着0.228736 readを使用するとファイルが部分的にローカルにキャッシュされるためですかhexdump?私はこの変更が特定的ではないことを知りました。たとえば、(そしておそらくファイルを読む他のプログラムでも)hexdump同じことが起こります:nano dernoncourt@server:/videos$ find myvideo.mp4 -printf "%S" 0.00302331 dernoncourt@server:/videos$ nano myvideo.mp4 dernoncourt@server:/videos$ find myvideo.mp4 -printf "%S" 0.486752

Admin

find -prune:-print0が検索結果に影響するのはなぜですか? [コピー]
find

find -prune:-print0が検索結果に影響するのはなぜですか? [コピー]

この質問にはすでに答えがあります。: 検索 - すべての結果を印刷または印刷しない (回答1個) 閉鎖2ヶ月前。 想像する: $ tree . . ├── x1.txt ├── x2.txt └── x3.txt 0 directories, 3 files $ find . -name "x1.txt" -prune -o -name "*.txt" ./x1.txt ./x2.txt ./x3.txt $ find . -name "x1.txt" -prune -o -name "*.txt" -print0 ./x2.txt./x3.txt -print0ここでは、これが検索結果に影響を与えることがわかります。混乱してください。 なぜ印刷されない-print0のですか?find ...x1.txt なぜ印刷さ-print0れないのですか?find ...x1.txt

Admin

Bash:正当なフォルダパスが認識されません。
bash
find

Bash:正当なフォルダパスが認識されません。

sedパスを次に変換するPATH入力を試してみましたfind。 User.Name@Machine-Name ~ $ echo $PATH | sed -e 's/:/\n/g' \ | sed -n -e 's=.*="&"=' -e '2,5p' "/bin" "/usr/local/bin" "/usr/bin" "/c/Program Files/Eclipse Adoptium/jdk-8.0.392.8-hotspot/bin" スペースを保護するためにパスが引用されます。残念ながら、次の住所に提出された場合find: User.Name@Machine-Name ~ $ find \ $(echo $PATH | sed -e 's/:/\n/g' | sed -n -e 's=.*="&"=' -e '2,5p') \ -iname '*libc*' find: ‘"/bin"’: No such file or directory find: ‘"/usr/local/bin"’: No such file or directory find: ‘"/usr/bin"’: No such file or directory find: ‘"/c/Program’: No such file or directory find: ‘Files/Eclipse’: No such file or directory find: ‘Adoptium/jdk-8.0.392.8-hotspot/bin"’: No such file or directory 実際、スペースは保護されておらず、パラメータ区切り文字として解釈されます。 一方、引用したパスだけを入力すると正常に動作します。 User.Name@Machine-Name ~ $ find "/bin" -iname '*libc*' # Finds nothing, but no syntax error User.Name@Machine-Name ~ これをどのように理解し、PATHパスをパラメータに効率的に変換できますかfind?

Admin

約8000個のファイル処理時に「find: fts_read: Invalid引数」が発生
bash
find
bugs

約8000個のファイル処理時に「find: fts_read: Invalid引数」が発生

GNU bashバージョン3.2.48にはこのバグがあります。バージョン 3.2.57 は使用できなくなりました。 8000の同じ行を含むファイルを作成します(各行が書き込まれると仮定1)。split -a3 -p "1"run on it (与えられたパターンに従って分割する-pBSD オプションです。 1 行に 1 行しかないファイルの場合は、実行して標準と同じ操作を実行できます)。split1splitsplit -a3 -b 1 find . -name xaaa -exec echo {} + 予想された出力の後にfind: fts_read: Invalid argumentは に出力されます。cerrファイルセットと他のコマンドをxaaa置き換えると同じエラーが発生します。echoファイル名の長さは重要ではありません。ファイルのディレクトリも重要ではありません。 他の場所でいくつかのファイルを生成した後、エラーは消えました。ただし、複数のファイルを含む別のワイルドカード(または少なくとも1つがディレクトリリストの先頭にあります)xaaaに置き換えると、エラーが再発生します。xaa*現時点では、エラーを引き起こす単一のファイルはありません。 +次のように置き換えると;エラーは防止されますが、私のスクリプトでは許可されていません。この問題は私のスクリプトの他の場合に断続的に発生しましたが、問題を減らすことでそれを複製する簡単な方法を見つけることができました。 エラーが発生した場合はスクリプトを停止したいが、これを行うとスクリプトが頻繁に停止します。この問題を解決する方法を知っていますか? (たとえば、エラーコードを検索してこの特定のエラーを無視します。) Mac OSバージョン10.8.5。ダーウィンカーネルバージョン12.5.0。

Admin

ファイル名自体なしでファイルパスを取得する方法
find
cd-command
xsel

ファイル名自体なしでファイルパスを取得する方法

私の.csvファイルを見つけて、そのディレクトリにcdしようとしています。 find Documents/notes -type f -name "*.csv" | head -1 | xsel -b これにより、ファイルの最初のディレクトリがクリップボードにコピーされ、それを実行しようとします。 cd $(xsel -b) しかし、もちろん、ディレクトリではなくファイル名が含まれているので、そうすることはできません。 ファイル名を省略する方法はありますか?もっと良い方法がありますか?

Admin

findを使用してディレクトリを参照するときにパスを実際に除外する方法
find
posix

findを使用してディレクトリを参照するときにパスを実際に除外する方法

次のようにすると: mkdir /tmp/test sudo mkdir /tmp/test/test2 sudo chmod 700 /tmp/test/test2 cd /tmp/test find ./ -not -path "*"私はtest2がパスではなくルールと一致することを確認したいと思います。これにより完全に排除されなければなりません。ただし、ルールに関係なくディレクトリを巡回しようとしたfind: ‘./test2’: Permission deniedことを意味します。find sudo でコマンドを実行すると、ディレクトリは表示されません。これは、除外ルールが機能しますが、初期ルート中の検索条件ではなく、初期検索の出力に適用されることを意味します。 時間のかかるネットワークファイルシステムのマウントなど、特定の問題のあるディレクトリを除きながらルートファイルシステムの巡回を実装しようとしているので、全体の実行時間を短縮するためにサブディレクトリを探索せずに直接見てみたいと思います。 この目標をどのように達成できますか?

Admin

入力ファイルを使用してファイルをコピーしてファイルの方向を読み込みます。
shell
grep
find
pipe
cp

入力ファイルを使用してファイルをコピーしてファイルの方向を読み込みます。

grep1TBのファイルを検索するために使用しています。ファイル名をgrepし、名前をテキストファイルに入れたいので、cpdirと一致するすべてのファイルが欲しいです/home/user/matches。すべてのファイルを2回grepingせずに両方の操作を実行したいと思います。 私の考えは、grepを使用してファイル名の出力をテキストファイルに入れることです。 grep -ril "xxx" . >> /home/user/matches/output-filename.txt これでoutput-filename.txtcpへの入力として機能し、cpが1行ずつ実行されるようにします。どうすればいいですか?え?それとも、すべてのファイルを2回検索しないようにする他のアイデアはありますか?

Admin

「find -exec」から「bash -c」サブシェルに複数の引数を渡すには?
bash
find
subshell

「find -exec」から「bash -c」サブシェルに複数の引数を渡すには?

サブシェルfind -execに複数の引数を渡す方法はありますか?bash -c このアクション呼び出しが行われると、"*dogs.mp4globパターンと一致するすべてのビデオを検索し(たとえば)、サブシェルで実行してファイルがffmpegすでに存在することを確認して警告します。 find . -iname "*.mp4" -exec bash -c 'if [[ -f "${1%.*}_540.mp4" ]]; then echo "Already exists: $1"; else ffmpeg -i "$1" -vf "scale=540:-1" "${1%.*}_540.mp4" ; fi ;' _ {} + 540サイズのハードコーディングを避けるために、後で$2サイズをパラメータとして渡し、コマンドが次のようになりました{}。_ {} 540 + find . -iname "*.mp4" -exec bash -c 'if [[ -f "${1%.*}_$2.mp4" ]]; then echo "Already exists: $1"; else ffmpeg -i "$1" -vf "scale=%2:-1" "${1%.*}_%2.mp4" ; fi ;' _ {} 540 + 上記の行でエラーが発生しましたfind: -exec: no terminating ";" or "+"。 :: 私が理解したように、これはファイル名のプレースホルダーである{}か、{} +コマンド{} \;の最後になければなりません。 この場合、bash -cfrom-exec句に追加のパラメータをどのように渡すことができますか?

Admin

Ansible -m シェルと検索コマンド
find
pipe
ansible

Ansible -m シェルと検索コマンド

この問題を解決する方法を知っている人はいますか? ansible -m shell -i test.txt -a "sudo find / -regex '.*\(tar\|zip\)$' -type f 2>/dev/null | while read i; do echo $i; done" 問題は「while」部分にあります。結果は表示されません。 Bashで直接実行すると、すべてが正常です。 findunzip(、および見つかったファイルに対してさまざまな操作を実行するため、この「while」部分が必要ですgrep。) ありがとう

Admin

検索 - xargs、各行に対して新しいシェルを開き、コマンドを実行し、ユーザーがシェルを終了するのを待ちます。
bash
find
xargs
gnu
read

検索 - xargs、各行に対して新しいシェルを開き、コマンドを実行し、ユーザーがシェルを終了するのを待ちます。

フォローアップ 仕事:*AlbumArt*inameファイルを含み、inameも含むすべてのフォルダを一覧表示し、*cover*.jpg各フォルダのサイズとともにすべてのjpgファイルを一覧表示します。 find . -type f -iname '*AlbumArt*' -print0 | sort -z \ | xargs -0 -I "{}" bash -c ' find "$(dirname "${1}")" -maxdepth 1 -iname "*cover*.jpg" -print0' _ "{}" \; \ | uniq -z | xargs -0 -I "{}" bash -c ' ls -la "$(dirname "${1}")"/*.jpg;' _ "{}" \; 私は何をしたいと思うか。 *cover*.jpginameとinameを含むすべてのフォルダを一覧表示し、*AlbumArt*そのフォルダ内の各画像ファイルのサイズを一覧表示し、ノーチラスを開き、それらのフォルダでこれらの画像を手動で確認できるようにしたいと思います(いくつかの追加ファイルを削除したいので)。一度に1つのフォルダを処理します。そのため、xargsのすべての出力に対してls -laノーチラスをオンにし、ノーチラスが閉じるのを待ちたいので、nautilus "${1}"; read -r -p "Press any key to continue" Continue;上に追加しました。 find . -type f -iname '*AlbumArt*' -print0 | sort -z \ | xargs -0 -I "{}" bash -c ' find "$(dirname "${1}")" -maxdepth 1 -iname "*cover*.jpg" -print0' _ "{}" \; \ | uniq -z | xargs -0 -I "{}" bash -c ' ls -la "$(dirname "${1}")"/*.jpg; nautilus "${1}"; read -r -p "Press any key to continue" Continue;' _ "{}" \; これは機能しますが、ユーザー入力のために停止しません。つまり、いくつかのread -r -p "Press any key to continue" Continue;ノーチラスウィンドウが開きます!しかし、一度に1つのノーチラスだけを開きたいので、xargsは各行の実行後に待機したいと思います。 xargsが各行を実行した後にユーザー入力を待機させるにはどうすればよいですか?

Admin