【问题标题】:Bash - Rename part of FilenamesBash - 重命名文件名的一部分
【发布时间】:2011-12-03 08:07:47
【问题描述】:

我需要一些帮助,用我的迷你脚本来修复,带有 ISO_8859-1 和/或部分名称的西班牙文件名,如 "&#00243"

脚本在那里:http://www.pastebin.com/vT5Z2BqE

昨天有 3 个东西,正在工作,我添加了更多,不再工作,我不明白为什么。

看,如果我在“Bash Shell”/“Gnome-Terminal”中使用该命令,例如:

inukaze@Inukaze:~$ cd Filenames_to_fix 
inukaze@Inukaze:~/Filenames_to_fix$ 
inukaze@Inukaze:~/Filenames_to_fix$ expresion='&#00176'
inukaze@Inukaze:~/Filenames_to_fix$ sustituto='°'
inukaze@Inukaze:~/Filenames_to_fix$ ls *$expresion*
01 - La Espada del Augurio &#00176.avi

inukaze@Inukaze:~/Filenames_to_fix$ for i in $( ls $expresion ); do

> orig=$i
> dest=$(echo $i | sed -e "s/$expresion/$sustituto/")
> mv $orig $dest
> done

mv: no se puede efectuar stat' sobre «01»: No existe el fichero o el directorio 
mv: no se puede efectuarstat' sobre «-»: No existe el fichero o el directorio 
mv: no se puede efectuar stat' sobre «La»: No existe el fichero o el directorio 
mv: no se puede efectuarstat' sobre «Espada»: No existe el fichero o el directorio 
mv: no se puede efectuar stat' sobre «del»: No existe el fichero o el directorio 
mv: no se puede efectuarstat' sobre «Augurio»: No existe el fichero o el directorio 
mv: no se puede efectuar `stat' sobre «°»: No existe el fichero o el directorio

我需要,将文件名“°”的一部分更改为“ª”,例如 有人/某人,可以解释为什么这个错误,以及如何解决它???

我不想交互模式,也不想替换“扩展名”,我想“重命名”文件名的坏部分,用“好”字符代替:D。

谢谢你的自述文件,对不起我的英语不好,谢谢你能给我这个脚本的任何帮助

【问题讨论】:

    标签: bash filenames rename


    【解决方案1】:

    你不引用 $orig 和 $dest 并且当文件名包含空格时会导致问题(mv 将文件名作为几个单独的参数给出(这就是为什么它会打印带有部分文件名的多个错误消息))。尝试使用

    mv "$orig" "$dest"
    

    改为。

    【讨论】:

    • 循环驱动也错了——你想要for i in *$expresion*; do ...
    【解决方案2】:

    for 循环使用空格作为分隔符。由于您的文件名包含空格,因此您需要更改用作分隔符的内容。

    这是使用 findwhile 的等效项

    find . -maxdepth 1 -name "*${expresion}*" -print0 | while read -d $'\0' file
    do
        orig="$file"
        dest=$(echo "$file" | sed -e "s/${expresion}/${sustituto}/")
        mv "$orig" "$dest"
    done
    

    但是,更好的解决方案可能是使用rename 命令:

    rename $expresion $sustituto *${expresion}*
    

    【讨论】:

      【解决方案3】:

      rename 命令可用吗?

      rename  $expresion $sustituto *$expresion*
      

      【讨论】:

      • 感谢您的建议。但我不知道“重命名”是否在所有发行版中都可用,例如“mv”
      • 迷你脚本完成了,我希望它适用于任何 Linux 用户,任何 Linux 发行版。您可以在 >> " pastebin.com/vT5Z2BqE " 中看到所有代码
      猜你喜欢
      • 2014-01-06
      • 2020-01-29
      • 2010-11-26
      • 2019-02-05
      • 1970-01-01
      • 2011-12-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多