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

Linux 在unix中重命名特定日期的文件,linux,unix,Linux,Unix,用于$*中的文件名;执行mv“$filename”“${filename//.temp/}” 我正在使用此脚本重命名文件。 它从文件名中删除.temp。我已将其保存为a.sh脚本,并使用我要重命名的文件执行它。但是如果我想重命名,比如说100个文件,并且只重命名特定日期的文件,这就变得很乏味了。是否有一种方法可以只传递日期并将脚本作为参数,它只重命名该日期的文件,而不必传递文件名您可以这样修改a.sh: find . -maxdepth 1 -type f -iname "*.temp" -ex

用于$*中的文件名;执行mv“$filename”“${filename//.temp/}”

我正在使用此脚本重命名文件。

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

您可以这样修改
a.sh

find . -maxdepth 1 -type f -iname "*.temp" -exec bash -c 'mv $0 ${0//.temp/}' {} \;
newermt
表示上次修改文件的日期

并且可以按如下方式执行它

/a.sh 2017-09-27

要测试此命令是否在命令行上工作,可以在脚本外部尝试此操作:

find . -maxdepth 1 -type f -iname "*.temp" -exec bash -c 'mv $0 ${0//.temp/}' {} \;

另一个选项是使用
-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

获取此错误>mv:无效选项--“a”。我使用了最后一个命令checkTry now,我已经将双引号改为单引号。我使用了这个>>>查找-f型-纽尔米特2017-10-03-newermt 2017-10-04-exec bash-c'mv$0${0/.temp/}{}\;>>您的命令正在重命名所有文件。如果我错了,请纠正我,还有一种情况是此命令不应检查子文件夹。我正在尝试使用深度/最大深度获取错误。目前,上述命令检查所有子系统-folders@Ritesh:是的,它正在检查所有文件。我已更新我的答案以匹配名称中只有“.temp”的文件。我已经包括了maxdepth 1,以便仅在当前目录中进行检查。如果不起作用,试着告诉我