AIX Unix find 命令获取第一个元素然后移动到下一个

AIX Unix find command to get first element then move on to the next

我的 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

您可以使用 -quit 命令 find 让它在第一个之后停止:

find /tmp -name a* -exec cp {} /tmp/found_first_file_start_with_a \; -quit

然而,这只会在 exec returns 为真时退出。如果 cp 命令失败(无论出于何种原因),它将继续搜索更多文件。因此,您可以只打印第一个文件并为单独的 cp 命令捕获它:

file=$(find /tmp -name a* -print -quit)
cp $file /tmp/found_first_file_start_with_a

忘记 find,试试这个:

set -- /tmp/a*
test -z "" || cp "" /tmp/found_first_file_start_with_a