最新記事

ヒント:
find

ヒント:

私のハードドライブには、回復プログラムによって作成された約300,000 x 3ファイルが含まれています。 これらのファイルの中には、次の形式があります。 .doc.apple.quarantine 以下は簡単に削除できます。 find . -type f -name '*.apple.quarantine' -delete ところが他の人はこの名言のためにもっと大変だ。 _AFP_Afpinfoファイル拡張子の後に書くことができます。 happybirthday.mp3._AFP_afpinfo そうでなければ happybirthday_AFP_Afpinfo 次の3番目の種類のファイルを削除したいと思います。 happybirthday_AFP_Afpinfo だから私の質問は、このUnixコマンドがこれらの文字を含むすべてのファイルを削除することですかAFP_Afpinfo? find . -type -f 'AFP_Afpinfo' -delete 私はテストしました -find . -type -f -name 'epub' -print ファイルは表示されません。 頑張った -find -type -f -name 'epub' -print そして表示されたファイル。したがって、afterの使用はfind正しくありません。 約 1/2 時間実行した後、次を実行します。 find -type f -name '_AFP_Afpinfo' 次のエラーが表示されます。 find: './.Trash-1000/files': Input/output error ディレクトリを確認しましたが、AFP_Afpinfoファイルがいっぱいです。

Admin

疑わしい行動が発見されました
bash
find

疑わしい行動が発見されました

現在のディレクトリで、所有者および/またはグループは書き込むことができますが、誰もが書くことはできないすべてのファイルを見つけます。 find . -type f -perm /220 ! -perm /002 -exec ls -l {} \; | tr -d '\.\/' | sort -k 9 -u -rws--S--- 1 root root 15 Sep 21 16:51 File0 -r--rw---x 1 root root 15 Sep 21 16:51 file01 -rwSr--r-- 1 achille achille 32 Sep 21 16:51 file1 -rwSr--r-- 1 achille achille 15 Sep 21 16:51 file2 -rw-r-Sr-- 1 achille achille 15 Sep 21 16:51 file3 -rw-r--r-- 1 root root 2254727 Sep 21 16:51 Open2_O -rw-r--r-- 1 root root 183 Sep 21 16:51 test0 すべて大丈夫だが… find . -perm /220 ! -perm /002 -exec ls -l {} \; | tr -d '\.\/' | sort -k 9 -u -rws--S--- 1 root root 15 Sep 21 16:51 File0 -r--r----x 1 root root 15 Sep 21 16:51 file00 -r--rw---x 1 root root 15 Sep 21 16:51 file01 -rwSr--r-- 1 achille achille 32 Sep 21 16:51 file1 -rwxrwxrwx 1 root root 15 Sep 21 16:51 File1 -rwSr--r-- 1 achille achille 15 Sep 21 16:51 file2 -rw-r-Sr-- 1 achille achille 15 Sep 21 16:51 file3 -rw-r--r-- 1 root root 2254727 Sep 21 16:51 Open2_O -rw-r--r-- 1 root root 183 Sep 21 16:51 test0 "-type f"スイッチがない場合、予期しない2つのファイルがさらに表示されます。file00とFile1 file -i file00 file00: text/plain; charset=us-ascii stat file00 File: file00 Size: 15 Blocks: 8 IO Block: 4096 regular file [..] file -i File1 File1: text/plain; charset=us-ascii stat File1 File: File1 Size: 15 Blocks: 8 IO Block: 4096 regular file [..] file -i File0 File0: text/plain; charset=us-ascii stat File0 File: File0 Size: 15 Blocks: 8 IO Block: 4096 regular file [..] file00 と File1 (問題のファイル) は他のファイル (例: File0) と似ているため、次のようになります。 file00とFile1が2番目のインスタンスに表示されるのはなぜですか(-type fスイッチなし)! ? なぜその会社のパーマが私が探しているパーマと一致しないのですか? とても感謝しています!

Admin

命令を検索すると、パラメータ値が混乱します。
linux
find

命令を検索すると、パラメータ値が混乱します。

~から探す手動: mtime n File's data was last modified n*24 hours ago. だから find . -mtime 0 n * 24時間前、つまり0 * 24時間前、つまり0時間前に変更されたコンテンツを見つける必要があります。しかしそれは真実ではない。 24時間前と現在の瞬間の間に修正されたコンテンツを見つけると思います。 それから find . -mtime 0 同じ find . -mtime -1 私は正しいですか?指示にエラーがありますか? 私の考えは次のとおりです(編集済み)。 -mtime -1, file was modified less than 24 hours ago -mtime -0, file was modified less than 24 hours ago -mtime 1, file was modified **exactly** 24 hours ago -mtime +1, file was modified more than 24 hours ago -mtime +0, file was modified more than 24 hours ago. -mtime 0, file was modified **exactly** 24 hours ago find . -mtime 024時間前に変更していないファイルが引き続き表示されるため、まだ把握していないようです。 編集2: まあ、私は何も理解していませんが、これは正しいチートシートだと思います。 find . -mtime +0 # find files modified greater than 24 hours ago find . -mtime 0 # find files modified between now and 1 day ago # (i.e., in the past 24 hours only) find . -mtime -1 # find files modified less than 1 day ago (SAME AS -mtime 0) find . -mtime 1 # find files modified between 24 and 48 hours ago find . -mtime +1 # find files modified more than 48 hours ago

Admin

/var/spool/abrt/をクリアする正しい方法は何ですか?
rhel
find
directory
rm
abrt

/var/spool/abrt/をクリアする正しい方法は何ですか?

私たちはからプロセスを自動化したいと思います/var/spool/abrt/。 RHELシステムバージョン7.xがあります。 既知の方法は次のことです # systemctl stop abrtd # systemctl stop abrt-oops 次のrmコマンドを使用して、これらのすべてのディレクトリとファイルを削除できます。 # abrt-cli rm /var/spool/abrt/* その後サービス開始 # systemctl start abrtd # systemctl start abrt-oops 削除プロセスを次のように単純化しようとしています。 10日より古いディレクトリが削除されます。/var/spool/abrt/ find /var/spool/abrt/ -type d -ctime +10 -exec rm -rf {} \; /var/spool/abrt/ディレクトリを消去するのは良い選択ですか?

Admin

findコマンドの-execで2つのbashコマンドを使用する方法は? GREPによる
grep
find
exec

findコマンドの-execで2つのbashコマンドを使用する方法は? GREPによる

私も同じことをしたいfindコマンドの-execで2つのbashコマンドを使用する方法は?ただし、2番目のコマンドとしてgrepを使用してください。以前のソリューションに公開されたソリューションは、grepが2番目のコマンドの場合は機能しません。別の問題exec オプションと find コマンドと grep コマンドの組み合わせgrepの使用について質問しましたが、すべての答えはgrepを使用しません。私の考えではgrepをしなければならないと思います。 例えば、 sudo find -D exec . -maxdepth 1 -type f -iname "*" -exec file -N '{}' \; -exec echo 'asdf' \; うまくいきますが、 sudo find -D exec . -maxdepth 1 -type f -iname "*" -exec file -N '{}' \; -exec grep "JPEG" {} \; grepが何かをするという証拠はありません。最初のコマンドの標準出力をgrepの標準入力に強制するにはどうすればよいですか?代わりに、ファイルコマンドの出力をファイルにパイプし、そのファイルに対してのみgrepを実行すると正常に動作します。 dell@DELL-E6440:~$ rm junk.txt dell@DELL-E6440:~$ sudo find -D exec . -maxdepth 1 -type f -iname "*" -exec file -N '{}' >> junk.txt \; dell@DELL-E6440:~$ grep "JPEG" junk.txt ./150120-ssc-proxy~20190508-061623.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 150x150, segment length 16, baseline, precision 8, 1018x1426, frames 3 ./avoid-powered-overfight~20190508-061623.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: "Intel(R) JPEG Library, version [2.0.16.48]", baseline, precision 8, 1048x659, frames 3 dell@DELL-E6440:~$ しかし、要点は、単一のbash行でこれを実行したいと思います>>は、とにかく実行の間にファイルを適切に更新できないことです。

Admin

linux
bash
files
find
ls

"ls -l"スタイルリストの列を並べ替えるには、検索を使用します。

ls -lを使用するときに得られるリストと同じ形式を取得しようとしていますfind。最後はファイル名ではなくフルパス名ですが。 FWIW 私find (GNU findutils) 4.5.11。 フラグが見つかりました-ls。大丈夫ですが、列の間にはるかに多くの間隔があり、便利ではありませls -lん。特に、最後にフルパス名を使用すると、結果を2行にプッシュして読み取りが困難になる可能性があるためです。たとえば... $ find /example -ls 7439 4 -rwxrwxr-x 1 example example 1579 Oct 26 1985 /path/to/first/file/that/was/found 530 4 -rwxrwxr-x 1 example example 122 Oct 26 1985 /path/to/second/file/that/was/found だからこれが完了している間、私はそれをよりよくしたいと思います。-printf旗を見るとfind同じ目的を達成したようです。これまで私は-printf '%M %u %g %p\n'素晴らしい情報を持っており、必要な情報をカスタマイズし、ここに他の情報を追加できます。しかし... 問題は列をソートする方法です。 このアプローチは、ユーザー名とグループ名の長さが異なる場合はあまり効果的ではありません。たとえば... $ find /example -printf '%M %u %g %p\n' -rwxr-xr-x root root /path/to/first/example/file -rwxr-xr-x example example /path/to/second/example/file この問題をどのように解決できますか?ただ使用するのが一番良いのですがfind、これができない場合は別のものとして配管することをお勧めします。マニュアルページでは、findこのオプションをまったく使用していないようです-printf。

Admin

sudo find / -name ファイル名で無効な引数エラーが発生する
find

sudo find / -name ファイル名で無効な引数エラーが発生する

私はAlmaLinux 8とWHM / cpanelを使って新しい専用サーバーをセットアップしました。 他の専用サーバーはすべてCentos 7とWHM / cpanelを使用します。 CentosサーバーでrootとしてSSHを実行すると、私はいつも sudo find / -name filename サーバー上のファイルを見つけました。 AlmaLinux 8で sudo find / -name filename rootとしてSSHを実行すると、次のエラーが発生します(sudo find / -name他のクエリのプロセス番号が変更されました)。 find: ‘/proc/929745/task/929745/net’: Invalid argument find: ‘/proc/929745/net’: Invalid argument sudo find / -name filenameSSHからrootとしてAlmaLinux 8へのいくつかのクエリでは、sudo find / -name filenameコマンドは実際に無効なパラメータに加えてファイルを見つけました。 AlmaLinux 8では無効な引数を無視しますが、ファイルが sudo find / -name filenameサーバー上にあるにもかかわらず、コマンドがファイルを見つけることができないことがあります。 sudo find . -name filename ファイルが間違いなくサーバー上にあっても、Centos 7またはAlmaLinux 8ではファイルが見つかりません。 どんな提案でも大変感謝します。 ありがとう、オードリー

Admin

Bash コマンド find、exec、および grep が正しく動作しません。何が問題ですか?
bash
centos
find

Bash コマンド find、exec、および grep が正しく動作しません。何が問題ですか?

ALARM / FATALキーワードを使用して、私のログファイルを別のバックアップファイルにフィルタリングしたいと思います。次の2つのファイルがあるとしましょう。 [root@TENCENT64 /tmp/test]# cat test_ccd.log ccd0.log:01-28 09:33:18:461 1254 F NORMAL ccd0.log:01-28 09:33:18:461 1254 F FATAL ccd0.log:01-28 09:34:30:827 1254 E ALARM [root@TENCENT64 /tmp/test]# cat test_mcd.log mcd0.log:01-29 09:33:18:461 1254 F NORMAL mcd0.log:01-29 09:33:18:461 1254 F FATAL mcd0.log:01-29 09:34:30:827 1254 E ALARM 次のバックアップファイルを作成したい [root@TENCENT64 /tmp/test]# cat test_ccd.log.txt ccd0.log:01-28 09:33:18:461 1254 F FATAL ccd0.log:01-28 09:34:30:827 1254 E ALARM [root@TENCENT64 /tmp/test]# cat test_mcd.log.txt mcd0.log:01-29 09:33:18:461 1254 F FATAL mcd0.log:01-29 09:34:30:827 1254 E ALARM これを達成するために次のコマンドを試しましたが、そのうちの何も動作しませんでした。誰もが私が間違っている部分を修正するのを助けることができますか? [root@TENCENT64 /tmp/test]# cat /etc/redhat-release CentOS Linux release 7.2 (Final) # this commands hangs for ever [root@TENCENT64 /tmp/test]# find . -name "*.log" -type f -exec sh -c 'grep -E "ALARM|FATA:" 1>>"$0.txt"' {} \; # this commands reports the error and the output was missed up [root@TENCENT64 /tmp/test]# find . -name "*.log" -type f -exec sh -c 'grep -R -E "ALARM|FATA:" 1>>"$0.txt"' {} \; grep: input file ‘test_mcd.log.txt’ is also the output grep: input file ‘test_ccd.log.txt’ is also the output # the output for each file is not correct [root@TENCENT64 /tmp/test]# cat test_mcd.log.txt test_mcd.log:mcd0.log:01-29 09:34:30:827 1254 E ALARM test_ccd.log:ccd0.log:01-28 09:34:30:827 1254 E ALARM [root@TENCENT64 /tmp/test]# cat test_ccd.log.txt test_mcd.log:mcd0.log:01-29 09:34:30:827 1254 E ALARM test_ccd.log:ccd0.log:01-28 09:34:30:827 1254 E ALARM test_mcd.log.txt:test_mcd.log:mcd0.log:01-29 09:34:30:827 1254 E ALARM test_mcd.log.txt:test_ccd.log:ccd0.log:01-28 09:34:30:827 1254 E ALARM 次のコードを使用してバックアップ警告を別の場所に保存しようとすると、状況が複雑になります。バックアップアラートを保存するNFS共有があり、各アラートは共有のフォルダ(IPアドレス名にちなんで名前付け)に個別に保存されます。以下は私のコマンドです # create the backed folder on the NFS share, like /data/backup/1.1.1.1/alarm_history ip=`hostname -I|awk '{print $1}'` && mkdir -p /data/backup/${ip}/alarm_history # iterate through /data/backup/1.1.1.1 to find all the alarms and persist into /data/backup/1.1.1.1/alarm_history, /data/backup is a shared base and 1.1.1.1 is mounted on the current server ip=`hostname -I|awk '{print $1}'` && find /data/backup/${ip} -name '*.log' -type f -exec sh -c ' grep -E "ALARM|FATAL" "$1" >> "/data/backup/${ip}/alarm_history/$1.alarm" && sort -o "/data/backup/${ip}/alarm_history/$1.alarm" -u "/data/backup/${ip}/alarm_history/$1.alarm" ' 'find-sh' {} \; 2 つのエラーが発生します。 find-sh: line 1: /data/backup//alarm_history//data/backup/11.62.17.249/manager/manager_mcd0.log.alarm: No such file or directory find-sh: line 1: /data/backup//alarm_history//data/backup/11.62.17.249/manager/manager_mcd0_stat.log.alarm: No such file or directory 2つの問題があります。 1. "find"コマンドに渡された$ {ip}はgrepによって認識されません。 2. $1.alarm, $1 は grep の絶対パスです。基本名はどのようにわかりますか?

Admin

検索出力のファイル名からスペースを削除する
bash
find

検索出力のファイル名からスペースを削除する

この質問にはすでに答えがあります。: 検索結果を繰り返すのはなぜ悪い習慣ですか? (8つの答え) スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか? (6回答) 「find」の-execオプションについて (回答1個) 閉鎖2年前。 指定されたルートディレクトリの下に使用されているディレクトリサイズを一覧表示したいと思いますdu -hs。問題は、ディレクトリ名にスペースが含まれている場合、duコマンドが名前の各単語を完全なディレクトリ名として扱うことです。 出力を引用してこの問題を解決しようとしましたが、xargs出力は同じです。 #!/bin/bash root="$1" echo "Searching in $root" for d in $(find $root -maxdepth 1 -type d | xargs -i echo "'{}'") do # # the root directory can take a long time so let's skip it # if [ "$d" != "$root" ] then echo "Looking at directory $d" echo $(du -hs "$d") fi done

Admin

特定のファイルを見つけて権限を変更する
bash
find
chmod

特定のファイルを見つけて権限を変更する

異なるアクセス権を持つ複数のファイルを含むPermissionsというディレクトリがあるとします。 私が望むのは、ファイルにカテゴリへのアクセス権がある場合は、そのカテゴリに同じアクセス権を付与したいとothers思います。group 例 1: file_1 が存在する場合は、r-x---r--ファイルに権限があることを望みます。r-xr--r-- 例2: file_2に権限があり、r-xr----xそうすることを望みます。r-xr-x--x 例3: file_3 と file_4 にはそれぞれアクセス権があり、rw---x---これらのrwxr-----ファイルは変更されていない状態にしておく必要があります。 findそのようなファイルを検索してからその値を変更できることはわかっていますが、-perm 0740権限とは異なる権限を持つファイルのみを検索し、ファイルが-exec chomd --- \;見つかった場合はアクセス許可を変更してアクセス許可を変更するにはどうすればよいですか。othergroupgroupother

Admin