在特定日期的unix中重命名文件

时间:2017-09-27 11:11:30

标签: linux unix

for filename in $*; do mv "$filename" "${filename//.temp/}";

我正在使用此脚本重命名文件 它从文件名中删除.temp。我已将其保存为a.sh脚本并使用我要重命名的文件执行它。但是,如果我想重命名100个文件并且只重命名特定日期,这就变得乏味了。有没有一种方法我只通过日期与脚本作为参数,它只重命名该日期的文件,而不让我传递文件名

2 个答案:

答案 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