我的问题是:如何将此命令行递归?它甚至可能吗?
ls -1 | while read arquivo ; do novo="`echo $arquivo \
| iconv -f UTF-8 -t ISO-8859-1`"; if [ "$novo" != "$arquivo" ] ;\
then mv "$arquivo" "$novo"; fi done
这应该做的伎俩:
find . -type f -exec bash -c 'novo="`echo $1 \
| iconv -f UTF-8 -t ISO-8859-1`"; if [ "$novo" != "$1" ] ;\
then mv "$1" "$novo"; fi' -- {} \
您可以将.
更改为任何适当的目录,并使用-name
按名称过滤文件,请参阅man find
。
要仅影响以.pdf
结尾的文件,您可以使用
find . -type f -name '*.pdf' -exec bash -c 'novo="`echo $1 \
| iconv -f UTF-8 -t ISO-8859-1`"; if [ "$novo" != "$1" ] ;\
then mv "$1" "$novo"; fi' -- {} \
单行复印和粘贴:
find . -type f -exec bash -c 'novo="`echo $1 | iconv -f UTF-8 -t ISO-8859- 1`"; f [ "$novo" != "$1" ] ; then mv "$1" "$novo"; fi' -- {} \;