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