我想在循环中一一处理文件名之前删除它们。下面的脚本是一个示例,我不知道如何获取"$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
)。