我有一系列编号文件(图像),我想将它们移动到子目录。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 部分。我发现这是每次都正确执行的最佳方法。