我有一个名为“week1”的文件夹,并且在该文件夹中有大约十个其他文件夹全部包含多个文件,其中包括一个名为“submit.pdf”的文件夹。我希望能够将所有“submit.pdf”文件复制到一个文件夹中,理想情况下使用终端来加快此过程。我试过cp week1/*/submit.pdf week1/
以及cp week1/*/*.pdf week1/
,但它只能复制一个文件。我只是意识到它每次都在写每个文件,这就是为什么我被困在一个......有反正我可以防止这种情况发生吗?如何使用终端从多个文件夹复制和重命名文件?
2
A
回答
2
您没有指明您的操作系统,但是如果您使用的是Gnu cp
,则可以使用cp week1/*/submit.pdf --backup=t week/
使其具有(任意)已存在的数字文件;但是,这不会给你任何真正的方法来确定哪个是哪个。
你可以,也许,做这样的事情:
for file in week1/*/submit.pdf; do cp "$file" "${file//\//-}"; done
...这将产生一个名为类似文件“week1-子目录提交。PDF”
对于它的价值,在"${var/s/r}"
符号表示采取VAR,但将它的值之前,搜索小号(\/
,意为/
,躲过因为在表达式中的其他特殊/
的)与[R(-
)替换它,使唯一的文件名
编辑:有实际上是一个更/
在T这里,使其匹配多次,使语法如下:
"${ var / / \// - }"
take "var" replace every instance of/ with -
1
find
来救援!经验法则:如果你可以用find
列出你想要的文件,你可以复制它们。所以首先尝试这样的:
$ cd your_folder
$ find . -type f -iname 'submit.pdf'
一些注意事项:
find .
意味着 “开始从当前目录下找到”-type -f
手段 “只能找到普通文件”(即不是目录)-iname 'submit.pdf'
“...不区分大小写的名称'submit.dpf'”。你不需要使用'quotation'
,但是如果你想使用通配符搜索,你需要。例如: -~ foo$ find /usr/lib -iname '*.So*' /usr/lib/pam/pam_deny.so.2 /usr/lib/pam/pam_env.so.2 /usr/lib/pam/pam_group.so.2 ...
如果您想要搜索区分大小写,只使用-name
代替-iname
。
当这项工作时,您可以使用-exec
命令复制每个文件。 exec
通过让你指定命令来使用命中来工作。它会为每个文件运行命令find
查找,并将该文件的名称放入{}
。您通过指定\;
来结束命令序列。
所以要echo
的所有文件,这样做:
$ find . -type f -iname submit.pdf -exec echo Found file {} \;
复制它们逐个:
$ find . -type f -iname submit.pdf -exec cp {} /destination/folder \;
希望这有助于!
相关问题
- 1. 将文件从一个文件夹复制到另一个文件夹,并使用旧文件名+时间戳重命名新文件夹中的文件
- 2. Bash终端命令重命名多个文件
- 3. 使用.bat文件语言复制和重命名文件?
- 4. Applescript - 重复文件夹,然后重命名和重命名文件
- 5. 我如何批量使用终端重命名文件?
- 6. 重命名多个文件夹内的多个文件
- 7. 如何将旧文件夹复制到新文件夹并重命名新文件夹中的文件
- 8. 在Ubuntu终端重命名文件
- 9. 终端:使用图像信息从sips重命名文件
- 10. 重命名文件而不复制到同一文件夹中
- 11. git的发现和重命名多个文件名和文件夹名称
- 12. 使用vba从多个子文件夹复制文件
- 13. Gradle复制和重命名文件
- 14. 重命名文件夹,子文件夹和文件
- 15. 在bash中重命名文件夹,文件和子文件夹
- 16. 如何重命名正在复制和复制文件的文件
- 17. 如何使用CMD复制命令复制多个文件夹的内容?
- 18. Mac OS X - 终端文件夹/文件名间距修复?
- 19. 使用子文件夹和文件重命名目录
- 20. Rsynch和SSH:重命名文件夹时只重命名文件夹
- 21. git重命名许多文件和文件夹
- 22. 如何通过文件夹循环和重命名文件
- 23. 将图像复制到另一个文件夹并重命名
- 24. 重命名多个文件
- 25. 重命名多个文件
- 26. 数字重命名文件,多个文件夹
- 27. 使用RegEx重命名文件夹
- 28. 重命名文件夹中的重复文件
- 29. 如何使用VB.NET从压缩文件夹复制和粘贴文件夹
- 30. 需要复制和重命名文件在不同的文件夹
is * submit.pdf *文件夹的名称? (顺便说一句,它看起来像你使用BASH或其他shell来做到这一点,而不是终端。终端(大概)是Mac OS X应用程序。) – kojiro 2011-12-15 17:54:27
submit.pdf是我想要的文件的名称复制。另外,我正在使用终端应用程序,但它在标题栏上显示`bash`,所以必须是shell。虽然我不知道这意味着什么。 – Travis 2011-12-15 21:25:47
终端可让您“进入”文本实用程序。你正在运行的shell是`bash`,Bourne Again SHell,它是Bourne Shell的Gnu版本。 – BRFennPocock 2011-12-15 22:22:24