【问题标题】:How to rename multiple files at once如何一次重命名多个文件
【发布时间】:2015-01-10 18:30:12
【问题描述】:

我的文件系统中有很多文件、目录和子目录。
例如:

/path/to/file/test-poster.jpg
/anotherpath/my-poster.jpg
/tuxisthebest/ohyes/path/exm/bold-poster.jpg

我想将所有文件名从 *-poster.jpg 切换到 folder.jpg
我试过sedawk 没有成功。
一点帮助?

【问题讨论】:

  • 我停止使用 cli 实用程序来完成此类任务,尽管这当然是可能的。看看kfilerename。它完成了这项工作并且非常强大。
  • 然后是mmv,它可以从 CLI 中解决问题。上次我看它是一个 C 源代码,一旦编译就允许这样做。它也在我的网站上,kubat.nl/pages/blogaria/101
  • @ElliottFrisch 我不认为这是重复的,我认为这两个问题根本不同。
  • @ElliottFrisch 不,不是,OP 想要命名位于不同特定位置的文件,而不是某个地图中的所有文件(无论目录结构的深度如何)。释放 find 命令将产生比 OP 可能想要更改的更多结果。
  • @ShellFish 我们读的是同一个问题吗?他想在他的很多文件、目录和子目录将所有文件名从*-poster.jpg 切换到folder.jpg - 然后作为例子列举了三个。

标签: linux shell awk sed file-rename


【解决方案1】:

您可以使用find

find -name "*poster.jpg" -exec sh -c 'mv "$0" "${0%/*}/folder.jpg"' '{}' \;

说明

这里,对于每个匹配的文件名,执行:

sh -c 'mv "$0" "${0%/*}/folder.jpg"' '{}'

'{}' 是作为参数传递给 command_string 的文件名:

mv "$0" "${0%/*}/folder.jpg"

因此,最后,$0 将具有文件名。

最后,${0%/*}/folder.jpg 扩展为旧文件名的路径并添加了/folder.jpg

示例

请注意,我将 mv 替换为 echo

$ find -name "*poster.jpg" -exec sh -c 'echo "$0" "${0%/*}/folder.jpg"' '{}' \;
./anotherpath/my-poster.jpg ./anotherpath/folder.jpg
./path/to/file/test-poster.jpg ./path/to/file/folder.jpg
./tuxisthebest/ohyes/path/exm/bold-poster.jpg ./tuxisthebest/ohyes/path/exm/folder.jpg

【讨论】:

  • 很好,为此 +1:"${0%/*}/folder.jpg"。非常优雅的脚本!
【解决方案2】:

试试这个脚本,它应该根据需要重命名所有文件。

for i in $(find . -name "*-poster.jpg") ; do folder=`echo $i | awk -F"-poster.jpg" {'print $1'}`; mv -iv $i $folder.folder.jpg; done

您可以替换 .到脚本中的命令find . -name "*-poster.jpg" 中放置这些文件的目录。让我知道它是否适合您。

【讨论】:

  • 我认为 OP 想要从 *-poster.jpg 重命名为 folder.jpg,而不仅仅是将 -poster.jpg 重命名为 folder.jpg。此外,文件名匹配模式*-poster.jpg 而不是*.poster.jpg
【解决方案3】:

你可以试试

find  -name '*poster*' -type f -exec sh -c 'mv "{}"  "$(dirname "{}")"/folder.jpg' \;

找到所有包含海报 == find -name '*poster*' -type f的文件

复制文件的目录路径并将其存储在临时变量中,然后将“folder.jpg”附加到目录路径== -exec sh -c 'mv "{}" "$(dirname "{}")"/folder.jpg'\;

【讨论】:

    猜你喜欢
    • 2019-07-21
    • 2022-01-26
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多