2つのファイルがあります。
~/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 "'"'"'")