
我嘗試了很多命令。沒有人完成這項工作。如何使用重新命名/查找或其他方式在子資料夾中的文件開頭遞歸地添加字串?
例子file.jpg --> image_file.jpg
find . -name '*.jpg' -exec rename -n "s/^/image_/" *.jpg {} +
for pic in '*.jpg' ; do rename -n "s/^/image_/ ${pic}"; done
find . -name '*.jpg' -exec rename -n "s/^/image_/ .jpg '{}' \;
find "/files/" -type f -exec rename 's/^/image_/' '{}' \;
find . -name '*.jpg' -type f -exec bash -c 'echo "$1" "${1/^/image_/}"' -- {} \;
為什麼這樣說Invalid cross-device link
find . -name '*.jpg' -execdir rename 's:./:/image_:' {} +
答案1
我找到了!此命令在所有子目錄中的每個檔案的開頭遞歸地添加一個字串。我還不知道為什麼它有效但有效。刪除“-n”以獲得實際結果。
find . -name '*.jpg' -execdir rename -n 's:./:./image_:' {} +
結果範例:rename(./28652316400.jpg, ./image_28652316400.jpg)
s
意思是替代。:
據我了解,這意味著轉到“.”第一次出現的地方。然後當您轉到“.”時,然後用“image_”替換並退出。 (不過我可能是錯的)。讀這裡更多關於 bash 和腳本中冒號的含義。