2016-06-10 107 views
0

文件夹中有一个文件夹,其中附有日期和时间。我想将其重命名为其他内容,以便我可以轻松访问它。我知道这个文件名的起始字。他们有没有办法我可以重命名这个(使用通配符或其他)? 。由于我正在尝试编写脚本来自动化某些内容,因此无法使用Tab。在linux中重命名附加日期的文件

此外,我想访问lexicographical的最后一个元素,并重命名它,如果有多个文件。

+0

你可以考虑软链接到它,而不是重命名它。 –

+0

您可以像在OP中所说的那样发布开始名称,并且您希望将其重命名为(以及)还有日期格式? – Inian

+0

假设它是Abc_10Jun2016_04_02_14,我想将它重命名为Abc_latest。已添加一些问题的更多细节。 –

回答

1

你想找到最近修改的文件在目录中?哪一个匹配模式?

find . -maxdepth 1 -mindepth 1 -type f -name "prefix*" \ 
    -printf "%TY%Tm%TdTH%TM %p\n" | sort -nr | read -r _ file 

printf "%s" "$file" 

假设没有包含换行符的文件名。而且你实际上只想获取目录中最后一次更改的文件。

替代你可以排序做这样的事情:

find . -maxdepth 1 -mindepth 1 -type f -name "prefix*" | sort -nr -t- -k2 

这将这样的文件排序:

prefix-2016-05-05 
prefix-2016-06-05 
prefix-2016-04-08 

prefix-2016-06-05 
prefix-2016-05-05 
prefix-2016-04-08 
1

假设该文件的名称是bob_2016-06-10_06:00:00.txt你可以这样做:

mv *_20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[0-2][0-9]:[0-5][0-9]:[0-5][0-9].txt commmonname.txt 
+0

嗨迈克尔, 已添加一些问题的详细信息。如果文件夹中有多个文件,我想访问词典的最后一个元素。 –

1

可以使用用正则表达式重命名。语法是:

Usage: rename [-v] [-n] [-f] perlexpr [filenames] 

因此,考虑以下文件:

[email protected]:/tmp/kk$ ls -l 
total 0 
-rw-rw-r-- 1 coda coda  0 Jun 10 13:28 aaaa-2016-01-01.txt 
-rw-rw-r-- 1 coda coda  0 Jun 10 13:28 aaaa-2016-01-02.txt 
-rw-rw-r-- 1 coda coda  0 Jun 10 13:28 aaaa-2016-01-03.txt 
-rw-rw-r-- 1 coda coda  0 Jun 10 13:28 aaaa-2016-01-04.txt 

可以重命名他们这样说:

[email protected]:/tmp/kk$ rename -v 's/aaaa/xxxx/' *.txt 
aaaa-2016-01-01.txt renamed as xxxx-2016-01-01.txt 
aaaa-2016-01-02.txt renamed as xxxx-2016-01-02.txt 
aaaa-2016-01-03.txt renamed as xxxx-2016-01-03.txt 
aaaa-2016-01-04.txt renamed as xxxx-2016-01-04.txt 

如果你想跟踪辞书最后一个元素,我会在脚本中使用类似这样的内容:

ln -sf `ls | tail -n1` latest 

由于LS排序按名称按默认情况下,你将永远有一个链接到您的辞书的最后一个元素:

[email protected]:/tmp/kk$ ls -lrt 
total 0 
-rw-rw-r-- 1 coda coda 0 Jun 10 13:28 xxxx-2016-01-01.txt 
-rw-rw-r-- 1 coda coda 0 Jun 10 13:28 xxxx-2016-01-02.txt 
-rw-rw-r-- 1 coda coda 0 Jun 10 13:28 xxxx-2016-01-03.txt 
-rw-rw-r-- 1 coda coda 0 Jun 10 13:28 xxxx-2016-01-04.txt 
lrwxrwxrwx 1 coda coda 19 Jun 10 13:59 latest -> xxxx-2016-01-04.txt 
+0

请注意,这不要与'util-linux'中的'rename'混淆。这个命令有时也被称为'perl-rename' – andlrc

+0

我增加了一些问题的细节。如果有多个文件,是否有一种方法可以访问词典的最后一个文件 –