I found this post here,它适用于删除空格后的所有内容,但我无法对其进行逆向工程以批量删除文件夹中的下划线和它之前的所有内容。提到的帖子的终端线是
find . -type f -name "* *" -exec bash -c 'f="$1"; s="${f/_ / }"; mv -- "$f" "${s/ *./.}"' _ '{}' \;
所以我需要它是下划线而不是空格,我需要它在字符之前而不是之后删除。例如。如果文件名为:
random text _987media.mp4
我希望它被命名为:
987media.mp4
最佳答案
您可以使用 bash-internal parameter pattern substitution :
$ f='random text _987media.mp4'
$ echo "${f/*_/}"
987media.mp4
删除最后一个下划线之前的所有内容,包括下划线。
批量重命名所有包含 _
的文件:
find . -type f -name "*_*" -exec bash -c 'f="$1"; g="${f/*_/}"; mv -- "$f" "$g"' _ '{}' \;
关于bash - 为文件夹中的多个文件重命名并删除 _ 之前的每个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46447980/