File 使用shell脚本从文件名中删除所有元音
当前代码:File 使用shell脚本从文件名中删除所有元音,file,shell,rename,File,Shell,Rename,当前代码: find . -depth | \ while read LONG; do SHORT=$( basename "$LONG" | tr '[aeiou]' '[ ]' ) DIR=$( dirname "$LONG" ) if [ "${LONG}" != "${DIR}/${SHORT}" ]; then mv "${LONG}" "${DIR}/${SHORT}" fi done 所以如果我有aaa abc bdf这样的
find . -depth | \
while read LONG; do
SHORT=$( basename "$LONG" | tr '[aeiou]' '[ ]' )
DIR=$( dirname "$LONG" )
if [ "${LONG}" != "${DIR}/${SHORT}" ]; then
mv "${LONG}" "${DIR}/${SHORT}"
fi
done
所以如果我有aaa abc bdf这样的文件,我会得到文件''bc''bdf'
我希望它工作的方式是返回'aaa''bc'bdf'。
(从第二个文件中完全删除a,如果所有字符(不包括文件扩展名)都是元音,请忽略它。我认为您的解决方案有两个问题:
- 你用元音代替空格。你不应该用空字符串代替吗
- 然后,您需要测试SHORT是否为空。如果为空,可以通过指定SHORT=LONG来丢弃它
tr -d aeiou
如果basename(不包括文件扩展名)仅为元音,则忽略:
case $SHORT in ''|.*) continue;; esac
你对元音有什么看法??:-)