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 "'"'"'")

相关内容