AIX Unix find命令获取第一个元素然后继续下一个元素

时间:2016-06-30 23:55:00

标签: bash shell unix find aix

我的list.txt文件有几百个条目指向放置在/tmp分区上的文件名。我正在收集以" a"开头的文件。例如apples.txtandromeda.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

2 个答案:

答案 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