【发布时间】:2021-07-11 13:57:23
【问题描述】:
你好堆栈溢出-
我想用一个输入文本文件(每个文件一行来查找)做两件事:将找到的文件复制到不同的目录,并提供一条消息是否找不到文件。该消息不必专门说明未找到文件;它还可以包括找到的文件的位置,如下面显示的输出。我无法组合下面的两个命令。这可能吗?我确信有其他解决方案,并且对这些方案持开放态度
#如果找不到文件或找到文件的位置,将告诉您: 命令:
for i in $(cat toGet.txt); do find . -name "$i" | grep . || echo "$i - file not found" ; done
输出:
- file1_L001_R*_001.fastq.gz - 找不到文件
- ./file2_S13_L001_R2_001.fastq.gz
- ./file2_S13_L001_R1_001.fastq.gz
- file3_L001_R*_001.fastq.gz - 找不到文件
#将找到的文件复制到新目录
for i in $(cat toGet.txt); do find . -name "$i" -exec cp {} /path/to/directory \; ; done
任何建议
【问题讨论】:
-
如果任何文件名的名称中有空格,
for i in $(cat toGet.txt);将不起作用。 -
谢谢;我不担心空格,因为文件名中没有空格
-
预防它是一个好习惯,以防万一。
标签: linux bash shell copy find