2016-06-10 57 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

我增加了一些問題的細節。如果有多個文件,是否有一種方法可以訪問詞典的最後一個文件 –

相關問題