使用文本文件和通配符检查目录中是否存在文件

时间:2019-02-13 07:40:03

标签: bash grep

如果您的文本文件中有行

def plot(pdb, df, title, **kw):
    df.loc[:,'target'] = (df['ogg'] + df['ugg']) / 2

并且您有一个名为的文件目录

abc
123
def
hij

您想在目录中获取与文本文件中的一行匹配的文件,并将该目录中的文件移动到子目录,在bash中执行此操作的最佳方法是什么?在此示例中,子目录将包含以下文件:

abc.txt
tgr.txt
lot.txt
hij.txt

我想做的事情是说:如果该字符串*作为文件名存在于目录中(带有通配符),则将该文件移至子目录。

我知道我可能会结合使用 find grep 命令,但是老实说,我对从那里继续前进感到困惑。谢谢。

1 个答案:

答案 0 :(得分:0)

cat text.txt | while read line; 
do 
    find . -maxdepth 1 -name "$line*" -print0 | xargs -0 -I {} mv {} ./target
done 

将文本文件放入循环中,并在当前目录中搜索每一行。如果在xargs中找到管道(如果找到多个文件),并将每个文件移动到目标目录中。