Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 使用shell脚本从文件名中删除所有元音_File_Shell_Rename - Fatal编程技术网

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

你对元音有什么看法??:-)