AWK - 파일 이름 변경(특수 문자)

AWK - 파일 이름 변경(특수 문자)

두 개의 파일이 있습니다.

~/Pulpit/kot$ find . -name "*jpg" -printf "%f\n"
1.jpg
`[~!($%^_&*){.}\___"`]`1.jpg

이름을 다음으로 변경하고 싶습니다.

_home_pic_Pulpit_kot_1.jpg

_home_pic_Pulpit_kot_`[~!($%^_&*){.}\___"`]`1.jpg

나는 다음 명령을 사용합니다.

~/Pulpit/kot$ find $PWD -name "*.jpg" | mawk '{c=$0; gsub("/", "_", c)}{system("echo mv -v " $0 " " c)}'
mv -v /home/pic/Pulpit/kot/1.jpg _home_pic_Pulpit_kot_1.jpg
/bin/sh: Syntax error: word unexpected (expecting ")")

편집하다:

이 명령은 작동합니다.

find $PWD -name "*.jpg" -exec bash -c 'mv "$0" "${0//\//_}"' {} \;

mawk로 같은 작업을 수행하는 방법은 무엇입니까?

편집-1:

이 솔루션은 다음과 같이 작동합니다.

find $PWD -name "*.jpg" | mawk 'a=$0{gsub("/", "_")}{system("mv -v '"'"'" a "'"'"'  '"'"'" $0 "'"'"'")}'

find $PWD -name "*.jpg" | mawk 'a=$0{gsub("/", "_")}{system("mv -v '\''" a "'\'' '\''" $0 "'\'' ")}'

find $PWD -name "*.jpg" | mawk 'a=$0{gsub("/", "_")}{system("mv -v \047" a "\047 \047" $0 "\047 ")}'

답변1

그냥 해야 할 수도 있습니다 mv... 보기 흉하지만...

변화

system("echo mv -v " $0 " " c)

도착하다

system("echo mv -v '"'"'" $0 "'"'"' '"'"'" c "'"'"'")

관련 정보