Var*_*r87 3 bash shell-script filenames
我正在尝试更改由不幸经常包含空格的应用程序生成的文件。我已经设法让“回声”给我输出,如果复制粘贴到终端中,它就可以工作,但是当我尝试执行命令时,它不起作用。我看了这个答案,它以前对我有帮助,但即使是“${x}”语法在这种情况下似乎也不起作用。
#!/bin/sh
cd ~/Data
IFS=$'\n';for i in $(ls); do
echo "$i";
filename="$i"
date=$(date -n +%Y-%m-%d)
new_filename="$date$filename"
echo mv \'"${filename}"\' \'"${new_filename}"\'
mv \'"${filename}"\' \'"${new_filename}"\'
done;
Run Code Online (Sandbox Code Playgroud)
主要问题是您遍历ls命令的输出。使用 glob*代替:
#!/bin/sh
cd ~/Data
for i in *; do
echo "$i"
filename="$i"
date=$(date -n +%Y-%m-%d)
new_filename="${date}${filename}"
echo mv "${filename}" "${new_filename}"
mv -- "${filename}" "${new_filename}"
done
Run Code Online (Sandbox Code Playgroud)
此外,我加入--到mv以正确处理文件,这名开头-。顺便说一句,我的date命令没有-n选项,但我保留它,因为您可能有不同的版本。