如何重命名旧文件?

How can I rename of old files?

我有这样一个目录:

-rw-r--r--  1 root root    0 Jan  7 15:04 tmp_FILE2015_123_1_3123.LOG
-rw-r--r--  1 root root    0 Jan  7 15:04 tmp_FILE2015_133_1_3123.LOG
-rw-r--r--  1 root root    0 Jan  7 16:04 tmp_FILE2015_133_1_3125.LOG
-rw-r--r--  1 root root    0 Jan  7 16:04 tmp_FILE2015_133_1__3223125.LOG
-rw-r--r--  1 root root    0 Jan  7 16:04 tmp_FILE2015_133_1_3223125.LOG

我需要删除 tmp_,我可以这样做:

for i in *; do s=$(sed -r 's/^(tmp_)(.*.LOG)//' <<< $i); if [[ "$i" != "$s" ]]; then mv "$i" "$s"; fi; done;

但我需要对超过 1 小时(修改后的时间)的文件执行此操作:

例如(现在:1 月 7 日 16:10):

-rw-r--r--  1 root root    0 Jan  7 13:00 FILE2015_123_1_3123.LOG
-rw-r--r--  1 root root    0 Jan  7 15:04 FILE2015_133_1_3123.LOG
-rw-r--r--  1 root root    0 Jan  7 15:01 FILE2015_133_1_3125.LOG
-rw-r--r--  1 root root    0 Jan  7 16:04 tmp_FILE2015_133_1__3223125.LOG
-rw-r--r--  1 root root    0 Jan  7 16:10 tmp_FILE2015_133_1_3223125.LOG

我该怎么做?

这将对过去一小时内修改的所有文件进行操作:

for orig_file in $(find . -type f -depth 1 -mtime -60m); do
    new_file="${orig_file#./tmp_}"
    if [[ "$new_file" != "$orig_file" ]]; then
        mv "$orig_file" "$new_file";
    fi;
done

如果您想对超过一小时的文件进行操作,请改用 +60m

我已经将 sed 的使用更改为使用一些内置的 bash 功能。