首页 > 解决方案 > 使用文本文件(包含文件名)将文件从当前目录复制到新目录

问题描述

我创建了一个文件 ( search.txt),其中包含.fasta要从当前目录复制的文件的文件名(其中还包含许多不需要的.fasta文件)。是否可以使用此文本文件查找当前目录中的匹配文件并将其复制到新位置?

search.txt 文件包含如下名称列表:

name_1
name_2
name_3

我尝试使用 find 和 grep 构建搜索词,如下所示:

find . *.fasta | grep -f search.txt

它为每个匹配的文件返回这样的输出:

./name_1.fasta
./name_2.fasta
./name_3.fasta
name_1.fasta
name_2.fasta
name_3.fasta

它正在查找正确的文件,但我不确定此输出是否有用/可用于复制这些文件?

标签: linuxgrep

解决方案


要从 search.txt 中仅获取匹配的文件名,我会这样做:

find . -type f -name '*.fasta' -print0 | grep -zf search.txt | xargs -r0 cp -t target-dir/

它将查找所有扩展名为 .fasta 的文件,仅显示 search.txt 中具有匹配模式的文件,并将它们批量 cp 到 target-dir,如果文件名包含换行符,每个文件名都以空字节结尾。


推荐阅读