我的list.txt
文件有几百个条目指向放置在/tmp
分区上的文件名。我正在收集以" a"开头的文件。例如apples.txt
,andromeda.txt
等将它们复制到目录中。
但是,我不想复制所有文件,而只复制第一个文件。它不必排序;只是第一个。
我该怎么做?欢迎任何提示。
#!/bin/bash
for i in `/usr/bin/cat /tmp/list.txt`
do
find /tmp/$i -name a* -exec cp {} /tmp/found_first_file_start_with_a \;
done
答案 0 :(得分:1)
忘记find
,试试这个:
set -- /tmp/a*
test -z "$1" || cp "$1" /tmp/found_first_file_start_with_a
答案 1 :(得分:0)
您可以使用-quit
命令find
让它在第一个之后停止:
find /tmp -name a* -exec cp {} /tmp/found_first_file_start_with_a \; -quit
但是,只有当exec返回true时才会退出。如果cp命令失败(无论出于何种原因),它将继续搜索更多文件。因此,您只需打印第一个文件并将其捕获为单独的cp
命令:
file=$(find /tmp -name a* -print -quit)
cp $file /tmp/found_first_file_start_with_a