Bash
通過將中間字元串移動到文件名末尾來重命名文件
我有一些數據文件,我希望為我的管道重命名它們。
文件如下所示:
{unique_ids}_{experiment_condition}_L{3_digit_number}.txt
我需要重命名它們,以便實驗條件標誌將出現在文件名的末尾,在副檔名之前,如下所示:
{unique_ids}_L{3_digit_number}_{experiment_condition}.txt
unique_ids 和experiment_condition 的長度不固定。
例子:
ghad312fd2_Mb_L002.txt
變成ghad312fd2_L002_Mb.txt
.謝謝你!
使用基於 Perl 的
rename
實用程序重命名目前目錄中與模式匹配的./*_*_*.txt
所有文件(即名稱包含至少兩個下劃線並以 結尾的任何文件.txt
):rename -n 's/([^_]+)_([^_]+)\.txt$/$2_$1.txt/' ./*_*_*.txt
這將交換文件名的最後兩個下劃線分隔的部分,不包括文件名後綴
.txt
。-n
在確保它似乎在做正確的事情之後,刪除它以真正執行它。
使用
zsh
外殼:autoload zmv zmv -n '(*)(_*)(_L[0-9](#c3))(.txt)' '$1$3$2$4'
(如果滿意,請刪除
-n
(試執行))。
[0-9](#c3)
匹配 3 個 ASCII 十進制數字的序列。您還可以使用<0-999>
匹配從 0 到 999 的數字(記住它也將匹配 0000123)或<->
任何數字(一個或多個 ASCII 十進制數字的任何序列)。