주어진 파일 세트의 특정 패턴과 일치하는 행의 내부 교체

주어진 파일 세트의 특정 패턴과 일치하는 행의 내부 교체

이전 질문에 이어 다음과 같습니다.

CSS 및 Javascript 콘텐츠 내의 파일 이름에서 슬래시/상위 경로를 제거합니다.

이 파일의 모든 파일 이름을 기본 이름으로 바꾸는 다음 명령을 얻습니다.

grep -o -h -E '[A-Za-z0-9:./_-]+\.(png|jpg|gif|tif|css)' |\
  sed "s:[a-zA-z0-9]*/::" `find . -name '*.css' -or -name '*.js'` 

처리된 각 파일에 대해 이 명령의 출력을 소스 파일에 다시 저장하려면 어떻게 해야 합니까?

답변1

오래된 질문에 대한 답변이 늦었지만 이것이 OP가 찾고 있는 답변이라고 생각합니다.

SEDCMD="/[A-Za-z0-9:./_-]+\.(png|jpg|gif|tif|css)/ s:[a-zA-z0-9]*/::"
find . -name '*.css' -or -name '*.js' -exec sed -i "$SEDCMD" '{}' ';'

답변2

다음과 같은 루프를 시도해 보세요.

find . -name '*.css' -or -name '*.js' | while read filename; do
  : $filename is the original file name
done

관련 정보