2013-02-19 89 views

回答

5

而是執行此操作:

for x in *; do 
    cp "$x" "${x/./_holo_light.}" 
    cp "$x" "${x/./_holo_dark.}" 
done 
3

爲什麼不乾脆:

ls | sed 's/a/c/g' 
+0

我更新了我的問題所取代。我不僅需要打印文件,而且需要重命名多個文件。 – 2013-02-19 08:56:53

+1

@hongbosb不要問一個問題,然後編輯它來問一個不同的問題!看到dogbane對你實際想問的問題的回答。 – 2013-02-19 09:05:42

+0

對不起,我的錯。 – 2013-02-19 10:04:07

1

注意,從LS解析輸出有some issues,如果你確信你沒有影響,你可以做這樣的(GNU SED):

ls | 
sed -nr 's/(.*)\.(.*)$/cp "\1.\2" "\1_holo_light.\2"\ncp "\1.\2" "\1_halo_dark.\2"/p' | 
sh 

雖然sed產生的複製命令其然後通過一個shell來執行。在追加| sh之前查看sed的輸出。

+0

+1如果您將引號添加到文件名,使用ls應該沒有問題。 – 2013-02-19 11:46:59

+0

@OlafDietsche:是的,我同意這會緩解一些問題,補充並感謝你。 – Thor 2013-02-19 11:53:49

0

雖然這裏提到的答案是正確的&優化,
爲您的原始問題文本,「模擬標準輸入」,您可以在這裏使用字符串。

echo "$var" | command 

可以

command <<< "$var" 
+0

該功能稱爲「此處字符串」,而不是變量替換。 – chepner 2013-02-19 13:26:12

+0

err ..是...... – anishsane 2013-02-19 14:19:42

相關問題