【发布时间】:2026-02-13 11:05:02
【问题描述】:
我正在尝试编写一个基于文件扩展名重命名文件的脚本。 该脚本应提示用户输入所需的文件扩展名。之后它应该询问用户在文件名前添加什么前缀。默认前缀应该是今天的日期,格式为 YYYY-DD-MM。
因此,如果用户按下回车键,它应该只使用今天的日期作为默认日期。否则它将使用用户输入的任何前缀。之后我希望它在同一行显示原始文件名和文件的新名称,然后最后应该重命名文件:
这就是我希望输出的显示方式
示例输出 1:
Please enter a file extension: gif
Please enter a file prefix: (Press ENTER for 20180219). helpme
Renaming goose.gif to helpmegoose.gif.
示例输出 2:
Please enter a file extension: gif
Please enter a file prefix: (Press ENTER for 20180219).
Renaming goose.gif to 20180219goose.gif.
这是我到目前为止的代码:
#!/bin/bash
cd /c/Users/johndoe/unix
curr=$(date +"%Y-%m-%d")
echo -n "Please enter file extension: " ; read extension
echo -n "Please enter a file prefix(Press ENTER for ${curr}) " ; read prefix
if [ -e $extension ]
then
for FILES in /c/Users/johndoe/unix/*.$extension
do
echo -n "Renaming ${FILES} to " ; mv ${FILES} $prefix${FILES};
done
else
echo -n "Renaming ${FILES} to " ; mv ${FILES} $curr${FILES};
fi
【问题讨论】:
-
你测试的是
$extension,而不是$prefix! -
[ -e $extension ]检查 $extension 中名为 whats 的文件,而不是变量。我想你想要[[ -n $prefix ]] -
啊,我明白了,你建议我修改成什么?
标签: bash shell unix for-loop wildcard