2012-06-19 77 views
1

在我的應用程序的config文件夾中,我想要將所有*.yml.sample文件轉換爲*.yml。有人可以幫忙嗎?我想用終端來完成這個任務。有沒有一個單一的命令來做這件事?使用終端更改文件夾中的文件名

回答

2

的一種方法,使用sed

ls -1 *.yml.sample | sed "s%\(.*\).yml.sample%mv & \1.yml%" | sh 

或者更簡單地說:

ls -1 *.yml.sample | sed "s%\(.*\).sample%mv & \1%" | sh 

編輯:

ls是方便,但解析它可能會失敗,空格,換行等。在這種情況下,循環和bash字符串替換是最好的:

for i in *.yml.sample; do mv "$i" "${i%.sample}"; done 

一些閱讀你:

Rename multiple files with Linux
Why you shouldn't parse the output of ls

HTH

+0

感謝您的回覆。但它適用於沒有空間的文件名。但是它的空間文件名失敗。請幫忙! – Arun

+0

請參閱我的更新。乾杯。 – Steve

+0

謝謝史蒂夫。我感覺它是最棒的! – Arun

3

使用簡單的shell循環和basename命令剝離第二個擴展。

for f in *.yml.sample; do 
    mv $f `basename $f .sample` 
done 
+0

感謝您的反應larsmans。只是想知道是否有一個命令使用模式或類似的東西。 – Arun

+0

@Arun:Linux系統通常有一個名爲'rename'的命令。雖然這不是標準化的;它帶有Perl。 –

+0

當我在終端中點擊此命令時,它正在等待來自我的輸入。我對什麼提供了困惑。你能幫忙嗎? – Arun

2

這是一個簡單的一個mmv做。

$ mmv "*.yaml.sample" "#1.yaml" 

引號在這裏很重要。

+0

你能告訴我這是怎麼回事? – Arun

+0

@Arun:現在增加一個示例 – LeoNerd

+0

'mmv'可能不能在所有系統上移植,但是可以替代'rename' +1 – Steve

1
find . -iname "*.png" -exec bash -c 'mv "$0" "${0%\.png}@2x.png"' {} \; 

我已經使用這個當前文件夾中的所有文件 「巴紐」 到「重命名@ 2x.png」。這對於給視網膜圖像命名非常有用。廣泛用於ios開發人員。

相關問題