我有一个用于更改 mht 文件的文件名的脚本,但它不会遍历目录和子目录。我在当地论坛上问了一个问题,得到的答案是这是一个解决方案:
find . -type f -name "*.mhtml" -o -type f -name "*.mht" | xargs -I item sh -c '{ echo item; echo item | sed "s/[:?|]//g"; }' | xargs -n2 mv
但它会产生错误。通过我的一些实验,结果证明sh -c
文件名用空格中断,这会产生错误。我怎样才能解决这个问题?
#!/bin/bash
# renames.sh
# basic file renamer
for i in . *.mht
do
j=`echo $i | sed 's/|/ /g' | sed 's/:/ /g' | sed 's/?//g' | sed 's/"//g'`
mv "$i" "$j"
done