查找与txt的行匹配的文件,然后将它们cp到新目录

mwngjboj  于 2022-10-17  发布在  Unix
关注(0)|答案(1)|浏览(190)

我有一个白色名单.txt。在这个txt中是一个类似于以下内容的文件名列表:

9853412_00000_0_0.vcf
7549682_00000_0_0.vcf
3589647_00000_0_0.vcf

我希望在特定的源目录中查找名称与白名单中的文件匹配的文件。然后,我想将匹配的文件复制到新的目标目录。
例如,如果我的源目录中的文件如下所示:

9853412_00000_0_0.vcf
7549682_00000_0_0.vcf
3589647_00000_0_0.vcf
8965423_00000_0_0.vcf
2547936_00000_0_0.vcf
5479241_00000_0_0.vcf

然后,我的脚本应该能够从源选择前3个VCF,并将它们复制到目标。
我已经试过这些剧本了。它们运行时没有错误消息,但没有文件可以从源文件被cp到目标文件,我不确定为什么。


# !/bin/sh

SOURCE="/my/source/dir/*.vcf"
TARGET="/my/target/dir/"

while IFS= read -r line; do
    find $SOURCE -type f -name "$line" -exec cp {} $TARGET \;  
done < whitelist.txt

# !/bin/sh

SOURCE="/my/source/dir/*.vcf"
TARGET="/my/target/dir/"

while IFS= read -r line; do
    find $SOURCE -type f -name "${line}" -exec cp '{}' $TARGET \;  
done < whitelist.txt
xnifntxz

xnifntxz1#

快到了,只要把*.vcf去掉就行了。


# !/bin/bash

SOURCE="/my/source/dir/"
TARGET="/my/target/dir/"

while IFS= read -r line
do
    find "$SOURCE" -type f -name "$line" -exec cp {} $TARGET \;
done < whitelist.txt

相关问题