for filename in $*; do mv "$filename" "${filename//.temp/}";
我正在使用此脚本重命名文件
它从文件名中删除.temp。我已将其保存为a.sh
脚本并使用我要重命名的文件执行它。但是,如果我想重命名100个文件并且只重命名特定日期,这就变得乏味了。有没有一种方法我只通过日期与脚本作为参数,它只重命名该日期的文件,而不让我传递文件名
答案 0 :(得分:1)
您可以像这样修改errors
:
a.sh
find . -maxdepth 1 -type f -iname "*.temp" -exec bash -c 'mv $0 ${0//.temp/}' {} \;
用于上次修改文件的日期。
并可以将其作为
执行 newermt
要测试此命令是否在命令行上运行,您可以在脚本外部尝试:
./a.sh 2017-09-27
答案 1 :(得分:0)
另一种选择是使用-nt
测试
# create a timestamp file
timestamp_filename=/tmp/$$
touch -t 201709270000 "$timestamp_filename"
trap 'rm "$timestamp_filename"' EXIT
# then to check a file is newer
if [[ "$a_file" -nt "$timestamp_filename" ]]; then
# a_file is newer
fi