ファイルリストに含まれるファイルのパターンを変更するには?

ファイルリストに含まれるファイルのパターンを変更するには?

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

関連情報