fileslist
ファイル名のリスト、またはこれらのファイルの相対パスと、一部の親ディレクトリの名前を含むテキストファイルがあります。の各行には1つのファイルしかありませんfileslist
。その親ディレクトリで各ファイルに対して1つずつコマンドを実行したいと思います。このコマンドは、すべてのファイルから特定のパターンを検索し、それを別のパターンに置き換える必要があります。各テキストファイルにはパターンが含まれている場合と含まれない場合がありますCollege Documents
。に変更したいですCollege_Documents
。どうすればいいですか?
答え1
私はxargs
そうすることを推薦する:
xargs sed -i 's/College Documents/College_Documents/g' < filelist
filelist
これはxargsに入力を読むように指示します(通常はstdin;ファイルの内容を提供します)。sed
たとえば、次のように引数リストをできるだけ多くのファイルで埋めます。
sed -i 's/College Documents/College_Documents/g' file1 file2 file3 ...
sed -i 's/College Documents/College_Documents/g' filen filem fileo ...
答え2
ちょっとした調査の後、私はこのコマンドが私の目的に最適であることを知りました。
cat fileslist | while read in; do sed -i 's/College Documents/College_Documents/g' $in; done