bash 脚本从文件名中删除特殊字符,然后将新名称作为变量传递

bash 脚本从文件名中删除特殊字符,然后将新名称作为变量传递

我想在循环中一一处理文件名之前删除它们。下面的脚本是一个示例,我不知道如何获取"$new_filename"

for file in *.txt
do rename -n 's/[^a-zA-Z0-9_-]//g' "$file"
process "$new_filename"
done

答案1

rename如果您要使用 shell 循环,据我所知,没有什么理由在这里使用。所以也许像

for file in *.txt; do 
  printf -v new_filename '%s' "${file//[^a-zA-Z0-9_-]}"
  echo mv -- "$file" "$new_filename"
  process "$new_filename"
done

添加echo作为rename命令-n标志的等效项。

(您可能希望添加.到包含的字符列表中,特别是因为您选择的文件名以 结尾.txt)。

相关内容