<premiered>
*.nfo 파일(하위 디렉터리 포함)에 포함된 줄을 삭제하고 싶습니다.
이것이 내가 사용하는 명령입니다
find . -type f -name '*.nfo' -exec sh -c '
file="$0"
echo "$file"
sed -i -e '/<premiered>/d' "&file"
read line </dev/tty
' {} ';'
불행히도 내가 얻는 것은
-bash: premiered: No such file or directory
문제는 무엇이며 어떻게 해결할 수 있습니까?
답변1
문제는 따옴표를 중첩할 수 없다는 것입니다.폐쇄이전에 참조 /<premiered>/d
하고 이후에 다시 엽니다. 이는 <premiered>
호출 셸에 노출되어 <
및 >
리디렉션 연산자로 해석된다는 의미입니다.
실제로 sed 명령을 쉘 명령으로 래핑할 필요는 없습니다. 다음 인수로 직접 실행할 수 있습니다 find ... -exec
.
find . -type f -name '*.nfo' -exec sed -i -e '/<premiered>/d' {} \;
파일 이름도 에코하려면 별도의 다음을 추가하세요 -print
.
find . -type f -name '*.nfo' -print -exec sed -i -e '/<premiered>/d' {} \;