2009-07-07 21 views
4

我試圖使用沿着如何直接覆蓋'unexpand'(空格到製表符轉換)?

unexpand -t 4 *.php 

線的東西,但我不知道該如何寫這個命令做我想要的。

古怪,

unexpand -t 4 file.php > file.php 

給我一個空文件。 (即無所覆蓋的file.php)

我可以指定多個文件沒關係,但不知道如何覆蓋每個文件。

我可以使用我的IDE,但有大約67000個實例需要被替換爲200個文件,這將需要一段時間。

我期望的答案我的問題(S)將成爲標準的UNIX票價,但我還在學習...

回答

9

可以很少使用輸出重定向到更換輸入。用內部支持它的命令代替工作(因爲他們然後自己完成基本步驟)。從外殼的水平,它遠遠好於兩步工作,像這樣:

  1. 請在foo的操作,創造foo.tmp
  2. 移動(重命名)foo.tmp爲foo,覆蓋原

這會很快。它將需要更多的磁盤空間,但如果在繼續下一個文件之前執行兩個步驟,則只需要最大單個文件所需的額外空間,這應該不成問題。

素描腳本:

for a in *.php 
do 
    unexpand -t 4 $a >$a-notab 
    mv $a-notab $a 
done 

你可以做的更好(錯誤檢查,等等),但是這是基本的輪廓。

+3

對於偏執狂的緣故,我傾向於: unexpand -t 4「$ a」>「$ a」-notab && mv「$ a」-notab「$ a」(這對於一對夫婦來說很安全額外的字符)。另外,引號是*真* *好* *想法*。 – ijw 2009-07-07 23:50:03