フォルダ内のファイルを繰り返す

フォルダ内のファイルを繰り返す

ファイルを含むフォルダがあり、unixコマンド「tr」を使用して以前と同じ名前の出力を使用してファイルを繰り返す必要があります(可能な場合)(以下のコードは機能しません)。

FILES=/root/Desktop/prova/*
for f in $FILES ; do
    echo "Processing $f file..."
    cat $f | tr "\n" "," > $f.tmp & mv $f.tmp $f 
done

cat "$f" | tr "\n" "," > "$f"このコマンドを使用して各ファイルの出力をリダイレクトする方法を理解できません。次に、別のforループを使用してN個のツールコマンドを生成し、一緒に実行する必要があります。ループ研究に関する提案はありますか?

ベストアンサー1

これはcat無駄なCPUの無駄なので、削除してください。出力を一時ファイルに送信し、ファイル名を変更し直します。

tr x y < input > input.tmp && mv input.tmp input

一度インストールすると、moreutils次のように実行できますsponge(一時ファイルを後ろから処理します)。

tr x y < input | sponge input

これらの名前を変更すると、完全にリンク解除されたソースファイルinputに設定されたクールなACLまたはセキュリティコンテキストが破損する可能性があります。

おすすめ記事