我正在尝试重命名包含空格的文件。 IFS = $‘\ n’实际上用作FOR循环现在可以处理带空格的文件名。不幸的是,DIR中的所有.csv文件都插入到变量FL中…
这是一个使用find,while和read的例子:
find . -type f | while read filename do echo "$filename" done
以下是如何将上述结构应用于您的特定问题:
find $DIR -name '*.csv' -type f | while read filename do mv "$filename" ${filename/ /} done
您可能只需要使用空格引用变量。但@Cyrus对解析ls输出有一个很好的观点。诱人的时候,它应该被认为是人类可读的数据。
这是你如何在没有ls的情况下做到这一点:
for f in $dir/*.csv; do mv -i "$dir/$f" "$dir/${f// /}"; done
从`backticks`改为 "quotes" 在FL_DP中
"quotes"
不解析ls,只需使用 for file in dirname..
for file in dirname..
IFS=$'\n' for FL in {DIR}/*.csv do FL_DP="${FL}" FL_RN=`echo ${FL_DP} | tr -d '[:blank:]'` mv ${FL_DP} ${FL_RN} done