파일 목록에 포함된 파일의 패턴을 바꾸는 방법은 무엇입니까?

파일 목록에 포함된 파일의 패턴을 바꾸는 방법은 무엇입니까?

fileslist파일 이름 목록 또는 이러한 파일의 상대 경로와 일부 상위 디렉터리의 이름이 포함된 텍스트 파일이 있습니다 . 의 각 줄에는 하나의 파일만 있습니다 fileslist. 해당 상위 디렉터리에서 각 파일에 대해 하나씩 명령을 실행하고 싶습니다. 이 명령은 모든 파일에서 특정 패턴을 검색하고 이를 다른 패턴으로 바꿔야 합니다. 각 텍스트 파일에는 패턴이 포함될 수도 있고 포함되지 않을 수도 있습니다 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

관련 정보