2017-07-31 149 views
1

我有一个脚本,它具有以下命令。我试图编辑这样一种方式,它只搜索路径目录中的文件,而不进入子目录。这不是递归搜索使用find以非递归方式在目录中搜索特定文件。 AIX

find {Path} -name“cor *”-type f -exec ls -l {} \;

示例:该命令应该只给cor123.log而不是cor456.log。目前它同时提供了

<Path> 
    ..cor123.log 
    <directory> 
     ..cor456.log 

我尝试使用-maxdepth,但它在AIX中不受支持。普朗和深渊也没有帮助。

将不胜感激任何帮助。由于

回答

0

您可以使用

find . -name . -o -prune 

查找文件和目录的非递归。

所以你的情况这一项将工作:

find . -name . -o -prune -name 'cor*' -type f -exec ls -l {} \; 
+0

我试过了,它没有工作。没有返回任何文件 –

+0

你用你的实际路径代替了这个点吗?第一个例子在你的环境中工作吗? – MichalH

+0

是的,我替换了点(找到后),但没有得到结果。第一个命令不起作用。 –

0

你需要find只选择文件?
当你知道开始cor所有文件都是边条的文件,你可以使用
ls -l ${Path}/cor*

ls -l ${Path}/cor*.log

当您需要-type f,你可以尝试过滤结果。
文件名不能有/,因此请在路径后用/删除所有内容。
我们不知道$ {Path}的最后一个字符。它可以是/,这将使过滤器无用。在查找下一个/之前,路径中至少需要一个字符。

find "${Path}" -name "cor*" -type f 2>/dev/null| grep -Ev "${Path}..*/" | xargs -ls 
相关问题