gpt4 book ai didi

bash - 在 ascii 中重命名 linux 目录的每个 unicode 文件

转载 作者:行者123 更新时间:2023-12-04 18:12:58 26 4
gpt4 key购买 nike

我正在尝试以 ASCII 重命名所有 unicode 文件名。

我想做这样的事情:

for file in `ls | egrep -v ^[a-z0-9\._-]+$`; do mv "$file" $(echo "$file" | slugify); done

但它还没有工作。
  • 一、正则表达式^[a-z0-9\._-]+$似乎还不够。
  • 其次,slugify 还转换了文件的扩展名,所以我必须先剪切扩展名,然后再将其放回去。

  • 有办法做到这一点吗?

    最佳答案

    首先,不要解析 ls 的输出.这通常是一个坏主意,特别是如果您期望文件名称中包含任何类型的奇怪字符。

    假设 slugify通常用文件名做你想要的,尝试:

    for file in * ; do
    if [ -f "$file" ] ; then
    ext=${file##*.}
    name=${file%.*}
    new_name=$(echo "$name"|slugify)
    if [[ $name != $new_name ]] ; then
    echo mv -v "$name.$ext" "$new_name.$ext"
    fi
    fi
    done

    警告:如果您的文件没有扩展名,这将失败(它会使文件名加倍)。见 this other answerDoctor J如果你需要处理。

    关于bash - 在 ascii 中重命名 linux 目录的每个 unicode 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12252802/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com