重命名之前_删除每个字符的多个文件的文件夹
问题描述:
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内部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"' _ '{}' \;
答
只需修改你的答案使用参数扩张串子去除。
find . -type f -name "* *" -exec bash -c 'f="$1"; s="${f##*_}"; mv -- "$f" "$s"' _ '{}' \;
应该就足够了。部分{f##*_}
删除字符串的一部分,直到文件中的最后一个_
。更多示例请参考此substring removal部分。
+1
感谢您指出找到下划线的位置。这是我在提到的帖子中让我困惑的部分。 – jons
您需要提供具体示例,说明您希望如何进行转换。 – Inian
刚刚更新了问题 – jons