我在文件夹结构中有12000个PDF文件和一个查找csv文件来重命名它们,保留结构。我找到了
Bulk renaming of files based on lookup
但是没有处理名称中的空格,我没有找到任何能够通过整个文件夹树结构并根据查找表重命名文件同时保留文件夹结构。
有什么想法吗? 感谢
答案 0 :(得分:0)
如果文件名中包含空格,则应在文件名前后使用双引号或将其内的空格转义。
对于您想做的事情,您可以重复使用以下zsh
脚本。
它将要处理的目录作为参数。首先尝试一些小的目录。为避免做错事,我建立了一个对话框并促进了反向重命名。
使用zsh
的全局功能选择要重命名的文件。您需要对此进行调整以适应您的情况。我制作了一个文件列表数组(带括号),所以我不必担心文件分隔符。
您应该修改from
和to
变量,或更普遍地修改sed
替换规则。您可以将csv文件转换为sed脚本。
#!/usr/bin/env zsh
from=RIB;to=IBAN
## reverse
#from=IBAN;to=RIB
filelist=($1/**/$from*.(pdf|jpg|jpeg|PDF|JPG|JPEG))
zip(){
for file in $filelist
do
$1 "$file" "`echo $file|sed -E "s/(.*)$from(.*)/\1$to\2/"`"
done}
# dry run
zip echo
read -q -s $'REPLY?Do you want to rename as above ?\n'
[[ $REPLY != y ]] && {echo "Not renaming and exiting.";exit}
echo "Renaming..."
zip mv
echo "Renamed."