![](/img/trans.png)
[英]Recursive bash script to rename files and folders with specific rules on Mac/Linux
[英]Rename all files in multiple folders with some condition in single linux command os script.
我有多個文件夾,其中包含多個文件。 我需要將這些文件重命名為與使用“_partN”前綴存儲文件的文件夾相同的名稱。
例如,
我有一個名為“new_folder_for_upload”的文件夾,其中有 2 個文件。 我需要轉換這兩個文件的名稱,例如,
new_folder_for_upload_part1 new_folder_for_upload_part2
我有很多像上面這樣的文件夾,它們有多個文件。 我需要按照上面的描述轉換所有文件名。
任何人都可以幫我找出一個 linux 命令或腳本來自動完成這項工作嗎?
假設bash
shell,並假設您希望為每個子目錄重新啟動文件編號,並將所有文件移動到頂級目錄(留下空子目錄)。 格式化為腳本以便於閱讀:
find . -type f -print0 | while IFS= read -r -d '' file
do
myfile=$(echo $file | sed "s@./@@")
mydir=$(dirname "$myfile")
if [[ $mydir != $lastdir ]]
then
NR=1
fi
lastdir=${mydir}
mv "$myfile" "$(dirname "$myfile")_part${NR}"
((NR++))
done
或者作為一行命令:
find . -type f -print0 | while IFS= read -r -d '' file; do myfile=$(echo $file | sed "s@./@@"); mydir=$(dirname "$myfile"); if [[ $mydir != $lastdir ]]; then NR=1; fi; lastdir=${mydir}; mv "$myfile" "$(dirname "$myfile")_part${NR}"; ((NR++)); done
謹防。 這是armed ,並將對當前工作目錄中或下方的每個文件進行批量重命名/移動。 使用風險自負。
要刪除空子目錄:
find . -depth -empty -type d -delete
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.