移动一系列文件

移动一系列文件

我有一系列编号文件(图像),我想将它们移动到子目录。https://superuser.com/questions/380338/move-a-range-of-numbered-files#=建议我使用

mv IMG_{001-022}.jpg subdir

问题是,考虑到该数字是时间戳,它不是连续的数字。上面的方法似乎对我的情况不起作用。

问题是您将如何处理上述非连续数字。

编辑:请注意,在此特定情况下,例如,有编号为 IMG_045.jpg 的文件。我只想要 IMG_001-IMG_022 之间的任何文件。

答案1

要移动所有形式的文件,IMG_nnn.jpg其中nnn为三名数字且不一定连续,请使用:

mv IMG_[0-9][0-9][0-9].jpg subdir

要仅移动编号从 001 到 0022 的文件,可以使用:

mv IMG_{001..022}.jpg subdir

上面的问题是,它会为每个不存在的文件生成错误消息。消息如下所示:

mv: cannot stat `IMG_014.jpg': No such file or directory

不过,忽略这些消息很简单。使用:

mv IMG_{001..022}.jpg subdir 2>&1 | grep -v "cannot stat"

答案2

我将为此使用 xargs:

ls IMG_{001..022}.jpg 2&> /dev/null|xargs -I {} mv {} subdir/

此外,因为我喜欢在使用之前先测试所有这些,所以我会先获取一个ls命令来打印你想要的内容。一旦你完美地掌握了它,只需添加 xargs 部分。我发现这是每次都正确执行的最佳方法。

相关内容