2017-07-24 102 views
1

我想重命名一個目錄中的所有文件文件名是1.ABC,2.ABC,3.ABC等我想將它們重命名爲1.abc,2.abc, 3.abc ....等等。在Linux中重命名文件名與列表

我已經試過

ls -1 *.ABC| xargs -I{} mv {} ${{}/ABC/abc} 

但是這似乎並沒有工作,沒有給出誤差

bash: ${{}/ABC/abc}: bad substitution. 

我想也重命名命令,但似乎並沒有被我的系統上運行:

rename 's/\.ABC$/.abc/' *.ABC 

不給我結果。如果可以糾正,我想堅持使用第一種方法。

+0

另請參閱[爲什麼你不應該解析輸出(1)](http://mywiki.wooledge.org/ParsingLs)以及Unix和Linux SE問題[爲什麼*不*解析'ls'?](https://unix.stackexchange.com/q/ 128985/1986) –

回答

1

如果你有rename工具,那麼你可以這樣做:

rename 's/ABC/abc/' *.ABC 

否則你可以使用這個簡單的for循環:

for file in *.ABC; do 
    mv "$file" "${file/.*/.abc}" 
done 
+1

它的確如此,謝謝anubhava,我實際上意識到這一點,方法。我實際上是在尋找第一種方法ls-1 * .ABC |的修正xargs -I {} mv {} $ {{}/ABC/abc}'但我認爲它只能在重命名時附加文件名時使用,而不是當你想要替換或刪除部分字符串新的文件名稱,如'ls -1 * .ABC | xargs -I {} mv {} {} _bkp' – Vicky

+0

通常,您應該避免分析'ls'的輸出 – anubhava