AIX Unix find 命令获取第一个元素然后移动到下一个
AIX Unix find command to get first element then move on to the next
我的 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
您可以使用 -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
我的 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
您可以使用 -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