我的问题是:如何使此命令行递归?甚至有可能吗?
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
答案 0 :(得分:0)
这应该可以解决问题:
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' -- {} \;