linux - 使用文本文件(包含文件名)将文件从当前目录复制到新目录
问题描述
我创建了一个文件 ( 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
它正在查找正确的文件,但我不确定此输出是否有用/可用于复制这些文件?
解决方案
要从 search.txt 中仅获取匹配的文件名,我会这样做:
find . -type f -name '*.fasta' -print0 | grep -zf search.txt | xargs -r0 cp -t target-dir/
它将查找所有扩展名为 .fasta 的文件,仅显示 search.txt 中具有匹配模式的文件,并将它们批量 cp 到 target-dir,如果文件名包含换行符,每个文件名都以空字节结尾。
推荐阅读
- php - 为什么我的 PHP 不能从 HTML 表单中捕获数据
- hibernate - 如何使 Quarkus 服务器在其 DataSource 无法连接到数据库或即使数据库已关闭时启动
- java - JNDI(在 Logback.xml 中)
- android - Live App 无法将数据写入 Firebase 数据库
- windows - Snort 找不到规则类型激活
- javascript - JavaScript for 循环值未在循环内部更新
- kubernetes - k3s - 豆荚之间的网络不起作用
- javascript - Dolar 到阿根廷比索的 JavaScript 转换器
- python - 如何从python中的循环将参数映射应用于read_sql
- python-3.x - 如何处理 ElementClickInterceptedException 硒 python