我在循环和搜索时遇到问题。似乎循环不等待查找完成。我做错了什么?
我做了一个循环,逐行读取文件。然后,我想使用该“名称”来搜索目录,以查看文件夹是否具有该名称。如果存在,请将其复制到驱动器中。
#!/bin/bash
DIRFIND="$2"
DIRCOPY="$3"
if [ -d $DIRFIND ]; then
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "$line"
FILE=`find "$DIRFIND" -type d -name "$line"`
if [ -n "$FILE" ]; then
echo "Found $FILE"
cp -a "$FILE" "$DIRCOPY"
else
echo "$line not found."
fi
done < "$1"
else
echo "No such file or directory"
fi
答案 0 :(得分:1)
你试过xargs ......
cat filenamelist | xargs -n1 -I {} find . -type d -name {} -print | xargs -n1 -I {} mv {} .
上面做的是将一个文件名列表导入find(一次一个),当找到find
打印名称并传递给移动文件的xarg
时......
file = yogo
yogo -> | xargs -n1 -I yogo find . -type d -name yogo -print | xargs -n1 -I {} mv ./<path>/yogo .
我希望上面有所帮助,请注意xargs
的优点是不会耗尽命令行缓冲区。