我想用shell命令行來重命名一個文件。
例如:重命名x111.png
到my_x111.png
(每個文件,添加前綴「MY_」)如何使用linux shell的管道重命名文件?
我知道mv xxx bbb
是重命名XXX至BBB的最佳方式,但如何寫shell的命令?
我想用shell命令行來重命名一個文件。
例如:重命名x111.png
到my_x111.png
(每個文件,添加前綴「MY_」)如何使用linux shell的管道重命名文件?
我知道mv xxx bbb
是重命名XXX至BBB的最佳方式,但如何寫shell的命令?
find -maxdepth 1 -type f | awk '{printf "mv %s my_%s\n", $2, $2}' FS=/ | sh
例
mv README my_README mv tree.pl my_tree.pl mv youtube.sh my_youtube.sh
ls -1 *.png | nawk '{p=$0;$0="my_"$0;;system("mv "p" "$0); }'
參考here
http://mywiki.wooledge.org/ParsingLs – 2013-06-19 08:20:19
rename 's/([^my_])(.*)/my_$1/g' *
此命令預規劃所有文件名與my_
排除已經與my_
啓動文件名。
這取決於您的rename
版本,這需要perl版本而不是util-linux-ng版本。
這個正則表達式看起來不正確:'/([^ my _])(。*)/'將會找到一個文件,它有一個不是'm'或者' y'或'_'。文件「my_foo」*將被匹配。另外,'$ 1'是匹配括號的第一個*組,因此不是'm | y | _'的單個字符。你可能想要:'rename'substr($ _,0,3)!=「my_」和$ _ =「my _ $ _」'*' – 2013-06-19 10:18:57
爲什麼你需要一個管道? '用於*中的文件;做mv「$文件」我的_「$文件」;完成' – 2013-06-19 10:24:33
相關問題:[更好的方式基於多個模式重命名文件](http://stackoverflow.com/a/25597051/2654678)。 – 2014-08-31 23:13:09