【发布时间】:2019-03-17 15:08:15
【问题描述】:
我正在尝试重命名包含空格的文件。 IFS=$'\n' 实际上作为 FOR 循环现在可以处理那些带有空格的文件名。不幸的是,DIR 中的所有 .csv 文件都插入到变量 FL 中,这会导致错误。有没有办法让变量 FL 一次处理一个文件,同时它还处理文件名中的空格?
脚本:
IFS=$'\n'
for FL in `ls -1 ${DIR}/*.csv`
do
FL_DP=`echo ${FL}`
FL_RN=`echo ${FL_DP} | tr -d '[:blank:]'`
mv ${FL_DP} ${FL_RN}
done
结果:
+ IFS=$\n
+ ls -1 test _1.csv test _2.csv
++ echo test _1.csv
test _2.csv
FL_DP=test _1.csv
test _2.csv
++ echo test _1.csv
test _2.csv
FL_RN=test_1.csv
test_2.csv
+ mv test _1.csv
test _2.csv test_1.csv
test_2.csv
mv: cannot access test _1.csv
test _2.csv
预期结果:
+ ls -1 test _1.csv test _2.csv
++ echo test _1.csv
FL_DP=test _1.csv
++ echo test _1.csv
FL_RN=test_1.csv
mv test _1.csv test_1.csv
【问题讨论】:
-
添加一个shebang,然后将您的脚本粘贴到那里:shellcheck.net
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Overflow 上发帖,您已根据 CC BY-SA 3.0 许可授予 Stack Overflow 分发该内容的不可撤销权利。根据 Stack Overflow 政策,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请查看How does deleting work?