复制嵌套子目录中的文件列表
Copy list of files in nested subdirectories
我有一组子目录,里面有文件:
├── dir1
│ ├── file_a.type
│ ├── file_b.type
│ ├── file_c.type
│ └── file_d.type
├── dir2
│ ├── file_e.type
│ ├── file_f.type
│ ├── file_g.type
│ └── file_h.type
└── README.md
我可以保证每个文件名的唯一性。目录命名约定为 n[some unique random number]
.
我有一个包含这些文件子集的文本文件
file_g.type
file_a.type
file_e.type
我想将与该文本文件中的名称匹配的所有文件复制到新目录。
我试过使用 xargs 进行复制,但是由于子目录的原因,这不起作用。
xargs -a files.txt cp -t new_dir each
我可以递归地将子目录中的所有文件复制到一个新目录,然后从那里开始。
但是,由于磁盘大小和带宽问题,这是不可能的。
使用标准 bash 实用程序执行此操作的有效方法是什么?
如果文件名在名为 files.txt
的文件中:
while read file
do
cp dir[12]/"${file}" -t new_dir
done < files.txt
使用xargs
可以这样做:
xargs -a files.txt -IFILE bash -c 'cp dir[12]/"FILE" -t new_dir'
我有一组子目录,里面有文件:
├── dir1
│ ├── file_a.type
│ ├── file_b.type
│ ├── file_c.type
│ └── file_d.type
├── dir2
│ ├── file_e.type
│ ├── file_f.type
│ ├── file_g.type
│ └── file_h.type
└── README.md
我可以保证每个文件名的唯一性。目录命名约定为 n[some unique random number]
.
我有一个包含这些文件子集的文本文件
file_g.type
file_a.type
file_e.type
我想将与该文本文件中的名称匹配的所有文件复制到新目录。
我试过使用 xargs 进行复制,但是由于子目录的原因,这不起作用。
xargs -a files.txt cp -t new_dir each
我可以递归地将子目录中的所有文件复制到一个新目录,然后从那里开始。
但是,由于磁盘大小和带宽问题,这是不可能的。
使用标准 bash 实用程序执行此操作的有效方法是什么?
如果文件名在名为 files.txt
的文件中:
while read file
do
cp dir[12]/"${file}" -t new_dir
done < files.txt
使用xargs
可以这样做:
xargs -a files.txt -IFILE bash -c 'cp dir[12]/"FILE" -t new_dir'