이 폴더 안에 많은 텍스트 파일이 포함된 폴더 트리가 있습니다. 이들 파일은 동일한 이름 "log.txt"와 동일한 형식을 갖습니다. 예를 들어, 각 파일에서 다음과 같은 여러 줄을 볼 수 있습니다.
date
name
.
.
.
find
명령을 사용 하여 이 폴더 트리에서 모든 텍스트 파일 "log.txt"를 찾은 다음 각 텍스트 파일에서 "date"라는 단어를 "dating"이라는 단어로 바꾸려면 어떻게 해야 합니까 ?
답변1
현재 트리의 루트에 있다고 가정합니다(그렇지 않으면 "."를 디렉터리 이름으로 바꿉니다). "log.txt"를 "*.txt" 또는 원하는 대로 바꿀 수 있습니다.
find . -type f -name 'log.txt' -exec sed -i 's/date/dating/g' {} \;
답변2
디렉토리 루트에서 및 를 사용할 수 있습니다 find
.sed
find . -type f -name 'log.txt' -exec sed -i 's/^date$/dating/' {} +
find . -type f -name 'log.txt'
log.txt
모든 파일을 재귀적으로 찾습니다.-exec
조건자에서 는find
파일 의 한 줄에서 로 대체sed -i 's/^date$/dating/' {} +
됩니다 .date
dating