我在 Linux 上,我试图从包含数百万个文件的目录 (SOURCE_DIR) 中查找数千个文件。我有一个我需要查找的文件名列表,存储在一个文本文件 (FILE_LIST) 中。该文件的每一行都包含一个名称,对应于 SOURCE_DIR 中的一个文件,文件中有数千行。
## FILE_LIST contain single word file names, each per line
#Name0001
#Name0002
#..
#Name9999
我想将文件复制到另一个目录 (DESTINATION_DIR)。我写了下面的循环,里面有个循环一个一个找。
#!/bin/bash
FILE_LIST='file.list'
## FILE_LIST contain single word file names, each per line
#Name0001
#Name0002
#..
#Name9999
SOURCE_DIR='/path/to/source/files' # Contain millions of files in sub-directories
DESTINATION_DIR='/path/to/destination/files' # Files will be copied to here
while read FILE_NAME
do
echo $FILE_NAME
for FILE_NAME_WITH_PATH in `find SOURCE_DIR -maxdepth 3 -name "$FILE_NAME*" -type f -exec readlink -f {} \;`;
do
echo $FILE
cp -pv $FILE_NAME_WITH_PATH $DESTINATION_DIR;
done
done < $FILE_LIST
这个循环花费了很多时间,我想知道是否有更好的方法来实现我的目标。我进行了搜索,但没有找到解决我的问题的方法。如果已经存在,请直接告诉我解决方案,或者请建议对上述代码进行任何调整。如果有另一种方法甚至是 python/perl 解决方案,我也很好。感谢您的时间和帮助!
泛舟湖上清波郎朗
智慧大石
暮色呼如
HUX布斯
相关分类