2017-11-24 9 views
-1

ディレクトリ内の異なる階層にあるファイルがa.txt,b.txtc.txtなどあります。コンテンツは、コンテンツがディレクトリ内のファイルを再帰的に見て、特定のパターンを削除して、同じ階層の新しいファイル名に書き込む方法

grape 
apple 
mango 

c.txt

apple 
orange 
mango 

b.txtです

a.txtコンテンツがされ

orange 
mango 
apple 
grape 

は今、アップルは、すべてのファイルから削除してでファイルを保存する必要がありますする必要があります新しい名前a_1.txt,b_1.txtc_1.txtは同じ場所にも元のファイルを保持しています。

a_1.txtコンテンツが

orange 
mango 

b_1.txtコンテンツがあるべきになるよう

grape 
mango 

`c_1.txtはする必要があります

orange 
mango 
grape 
+2

* Stack Overflow *へようこそ。質問を編集し、これまでに試したことをいくつかのコードを投稿してお知らせください。私たちがどこにいるか教えてください。一般的な考え方とは対照的に、* Stack Overflow *はコーディング要求をダンプし、誰かがあなたの要件をコードしている間、あなたの日を楽しむサイトではありません。がんばろう。 – CKing

答えて

0

find + shellgrep + sed + prenamePerlのrename)ツールの組み合わせで)解決策:

find . -type f -name "*.txt" -exec sh -c \ 
'grep -q "\<apple" "$0" && (sed -i "/\<apple/d" "$0"; prename "s/\.txt$/_1$&/" "$0")' {} \; 
0

は、これらのコマンドは、スクリプトに役立ちます願っています。

$ sed -i -e 's/apple//g' *.txt 

$ for f in *.txt; do printf '%s\n' "${f%.txt}_1.txt"; done 
関連する問題