迭代資料夾中的文件

迭代資料夾中的文件

我有一個包含文件的資料夾,我需要使用 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 或安全上下文。

相關內容