我想知道如何复制具有常用名称的文件并将其粘贴到另一个文件夹中。
例如,我有文件夹 f1、f2、f3 ... f50。每个文件夹内都有名为 a#、b#、c#...z# 的文件。# 是一种随机数,它们在 f1、f2、f3 ... f50 中是不同的。
例如,我想复制a
所有 50 个文件夹中的文件f
并将它们粘贴到新文件夹中。
你能帮我做这件事吗?
答案1
我假设你的意思是你有一个类似的结构:
├── f1
│ ├── a1
│ ├── a2
│ ├── b1
│ ├── b2
│ ├── c1
│ ├── c2
├── f2
│ ├── a3
│ ├── a4
│ ├── b3
│ ├── b4
│ ├── c3
│ ├── c4
并且你希望最终得到如下目录:
a-files
├── a1
├── a2
├── a3
└── a4
假设:
- 当前工作目录是所有目录的父目录
f1 f2 f3
你可以这样做:
mkdir a-files
for files in f*/a* ; do cp "$files" a-files ; done
将所有以 开头的文件从以 开头的所有目录复制a
到新目录。您可以对以 b 开头的文件重复此操作...a-files
f
mkdir b-files
for files in f*/b* ; do cp "$files" b-files ; done
注意:如果有任何重复的文件名,则写入新目录的每个文件都将覆盖另一个同名文件,因此在循环结束时,新目录将只有最后一个同名文件的副本。您可以使用标志-n
来cp
防止覆盖,然后您将获得第一个同名文件,而不是最后一个:
for files in f*/a* ; do cp -n "$files" a-files ; done