/tmp
このファイルの下から100分より古いファイルを削除しようとしています。
違いは何ですか:
find /tmp -type f -mmin +100 -exec rm {} \;
そして:
find /tmp -type f -mmin +100 -exec -delete
第二- いくつか追加できますか?印刷/エコー削除するすべてのファイルを印刷するコマンドから?
/tmp/hadoop-unjar7118762490947462979/META-INF/NOTICE was deleted !!!
答え1
ファイルの削除中にファイルを印刷する2つの選択肢を考えました。
find /tmp -type f -mmin +100 -printf '%p was deleted!!\n' -delete
または
find /tmp -type f -mmin +100 -exec rm -v {} \;
前者は、find
ファイルを削除する前にファイル名(フルパス)を印刷するようにGNUに指示し、後者はfind
各ファイル名に対して実行するように指示します。rm -v
-v
rm
前者の出力は次のとおりです。
/tmp/.sh_history.6668 was deleted!!
/tmp/krb5cc_6094 was deleted!!
/tmp/.sh_history.18394 was deleted!!
そして後者の出力は次のとおりです。
removed ‘/tmp/.sh_history.6668’
removed ‘/tmp/krb5cc_6094’
removed ‘/tmp/.sh_history.18394’
-exec rm {}
vsで注目すべきもう一つのことは、$ PATHを検索する-delete
ことです。-exec rm
rm
-delete
リンクを直接キャンセルしてください。文書。一般的に問題ではありませんが、注意すべき点があります。
例:
$ pwd
/tmp/jeff
$ ls
bar foo rm
$ cat rm
#!/bin/sh
echo Hi, I am the fake rm: "$@"
$ PATH=/tmp/jeff:$PATH
$ find . -type f -exec rm {} \;
Hi, I am the fake rm: ./rm
Hi, I am the fake rm: ./bar
Hi, I am the fake rm: ./foo
-delete
を使用すると、デフォルトfind
では深さ優先の方法で検索パスもナビゲートされます。これにより、後で入力しないディレクトリを削除できます。ディレクトリで使用する場合はfind
withを使用する必要があります。そうしないと、存在すると思うディレクトリが見つからないと文句を言います。-depth
-exec rm -rf {}
find