変数またはファイルの出力を使用する(-execとshredで検索)

変数またはファイルの出力を使用する(-execとshredで検索)

それを壊すために実行するfindコマンドがありますが、それはうまく機能します。ただし、その出力をキャプチャして変数またはファイルに渡す必要があります。次のコマンドを何度も繰り返しましたが、うまく動作しないようです。私もforループを試しました。スマッシング処理を行うと、常に端末に表示されますが、ファイルや変数には書き込まれません。私は変数を好みますが、この時点では何でも使用します。以下の例を参照してください。

元の検索コマンド:

find /burncd/working -type f -exec shred -v -n7 -z --remove {} \; 

(StackExchangeで)ファイルに渡された最近試行されたコマンド:

find /burncd/working/* -type f -exec bash -c 'shred -v -n7 -z --remove "$1" /tmp/find.out' $0 {} \;

あなたが提供できるどんな助けにも感謝します。

答え1

shredstdoutではなくstderrに進行状況を出力するようなので、その出力を使用または2>リダイレクト2>>する必要があります。

次のようなものは、検索とシュレッドからstderrをリダイレクトします。

find . -type f -exec shred -n1 -v {} + 2> /tmp/shred.out

これは次のstderrのみをリダイレクトしますshred

> ../shred.out
find . -type f -exec sh -c 'shred -n1 -v "$@" 2>> /tmp/shred.out' find-sh {} + 

(findで始まるシェルはfind-shファイル名をfind-shgoto $0、filenameto $1$2...という引数として取り、すべて別の"$@"単語に展開されます。$0で使用されます)

同様の操作を実行して、 find 出力と shred 出力をファイルと端末の両方に送信することもできます。

find . -type f -exec shred -n1 -v {} + 2>&1 | tee /tmp/shred.out

(同様に、throughの出力のみfind .. -exec sh -c 'shred ... 2>&1 | tee /tmp/shred.out' find-sh {} +shred入れる必要があります。ただし、これを行うと、teeの連続した出力が間違った順序で混在する可能性があります。)findshred

関連情報