2014-12-19 91 views
1

我在文件夾中有一堆文件,其中包含不需要的特殊字符(#)。如何刪除UNIX中某些文件中的字符?

對於一個文件,就像fadg0_si1279.acs這似乎工作,:sed 's/#//' fadg0_si1279.acs > a.acs,但在這種情況下,我有重新編寫源文件中的一些困難:試圖寫入目標一樣的來源:sed 's/#//' fadg0_si1279.acs > fadg0_si1279.acs,但它返回一個空文件!一切都被刪除了!任何爲什麼會發生的建議,以及如何解決?

我的下一個問題:有沒有辦法在整個文件夾中刪除該字符?對於1340個文件來說,這似乎很難做到!非常感謝!

回答

1

要做到這一點目錄中的遞歸目錄和每個文件:

find . -type f -print0 | xargs -0 sed -i.bak 's/#/2/g' 

要做到這一點在當前目錄:

find . -maxdepth 1 -type f -print0 | xargs -0 sed -i.bak 's/#//g' 
  • 發現 - 會發現文件
  • sed的 - 會在替換之前,在文件內移除#inplace,並在同一時間創建filename.bak文件。
1

在sed可以添加-i來代替就地:

sed -i 's/#//' file 

桑達man-page

在Perl中這將刪除所有#從所有文件中的 「文件夾」:

perl -pi -e 's/#//g' /Folder/* 

選項說明:
-p:在您的命令周圍放置一個打印循環,以便它的作用是o每個
行標準輸入。主要用於這樣的Perl可以擊敗
脫褲子在功率和簡單性方面:-)
-i:就地修改您的輸入文件。方便地修改文件,而不需要{複製,
刪除原始,重命名}過程。
-e:允許您提供程序作爲參數,而不是在文件中提供
。您不希望爲每個小Perl都創建一個腳本文件

g代表文件中simbol#的所有重現。

相關問題