我使用find
,foundlist.lst
创建了一个文件列表。
find命令只是find . -type f -name "<search_pattern>" > foundlist.lst
我现在想使用此列表在其他目录中查找这些文件的副本。
我的要求中的'扭曲'是我想只搜索文件名的“基础”。我不想在搜索中包含扩展名。
示例:
./sort.cc
是该列表的成员。我想查找模式sort.*
这是我写的。有用。在我看来,有一种更有效的方法来做到这一点。
./findfiles.sh foundfiles.lst /usr/bin/temp
#!/bin/bash
# findfiles.sh
if [ $# -ne 2 ]; then
echo "Need two arguments"
echo "usage: findfiles <filelist> <dir_to_search>"
else
filename=$1
echo "$filename"
while read -r line; do
name=$line
# change './file.ext' to 'file.*'
search_base=$( echo ${name} | sed "s%\.\/%%" | sed "s/\..*/\.\*/" )
find $2 -type f -name $search_base
done < $filename
fi
答案 0 :(得分:1)
对于剥离文件,我将使用以下(而不是awk)
search_base=`basename ${name} | cut -d'.' -f1`