【发布时间】:2019-12-08 20:53:20
【问题描述】:
我有一个目录:
❯ find ./images -name *150x150.jpg
./images/2060511653921052666.images/thumb-150x150.jpg
./images/1777759401031970571.images/thumb-150x150.jpg
./images/1901716489977597520.images/thumb-150x150.jpg
./images/2008758225324557620.images/thumb-150x150.jpg
./images/1988762968386208381.images/thumb-150x150.jpg
./images/1802341648716075239.images/thumb-150x150.jpg
./images/2051017760380879322.images/thumb-150x150.jpg
./images/1974813836146304123.images/thumb-150x150.jpg
./images/2003120002653201215.images/thumb-150x150.jpg
./images/1911925394312129508.images/thumb-150x150.jpg
(...)
我想将所有这些文件 (thumb-150x150.jpg) 复制到一个目录中。
❯ find ./images -name *150x150.jpg -exec cp {} ./another-directory \;
当然,每个文件都会被下一个文件覆盖。
那么我怎样才能将它们复制到:
1) 1.jpg、2.jpg、3.jpg...等
或
2) 使用子目录 id (./images/2060511653921052666.images/thumb-150x150.jpg) 作为目标文件名(本例中为2060511653921052666.jpg)?
【问题讨论】:
-
每个文件显然都需要一个新的/不同的名称;虽然 SO 社区可以提出很长的新名称/格式列表,但最终新名称的格式由您决定;您打算在未来如何参考/使用这些文件?您是否需要对新文件名应用任何类型的排序?您是否需要根据特定模式搜索/列出文件的能力?新文件名是否应该包含任何信息来说明它最初来自哪里?该文件是否需要关联/引用其他目录或文件?
-
文件名必须不同 - 仅此而已。我不需要引用特定文件。我只需要将它们全部放在一个位置(文件夹)。
-
@gib :为什么不简单地命名文件,即
2060511653921052666-thumb-150x150.jpg。然后,您可以将它们全部放入同一个目录中,仍然可以查看它们的来源?
标签: bash file copy zsh file-copying