我正在使用以下命令并获取错误" arg list" long'.help需要。
find ./*
-prune
-name "*.dat"
-type f
-cmin +60
-exec basename {} ;
这是修复
find . -prune -name "*.dat" -type f -cmin +60 |xargs -i basename {} ;
仅在当前目录中查找文件,使用 -maxdepth 1
。
find . -maxdepth 1 -name '*.dat' -type f -cmin +60 -exec basename {} ;
在所有 *nix系统中,Shell具有可以传递给命令的最大参数。这是在Shell扩展了作为命令行上的参数传递的文件名之后测量的。
查找的语法是 find location_to_find_from arguments....
。因此,当您运行此命令时,Shell将使您的./*
扩展到当前目录中所有文件的列表。这将使您的查找命令行扩展到find file1 file2 file3 etc etc
,这可能不希望您想要,因为发现仍然是递归。我希望您正在以大型目录运行此命令并吹出命令长度限制。
尝试按下以下命令
find . -name "*.dat" -type f -cmin +60 -exec basename {} ;
这将防止可能导致您的问题的文件名扩展。
没有找到,只检查当前目录
now=$(date +%s)
for file in *.dat; do
if (( $now - $(stat -c %Y "$file") > 3600 )); then
echo "$file"
fi
done
这在我的GNU系统上起作用。您可能需要更改不同OS的
如果您必须仅在 ./ tree中显示 .dat fileName。无需-prune
选项执行它,然后使用路径:
find ./ -name "*.dat" -type f -cmin +60 -exec basename {} ;
查找所有 .dat 文件,这些文件在当前目录中只有60分钟的时间仅如下:
:find . -iregex "./[^/]+.dat" -type f -cmin +60 -exec basename {} ;
,如果您有croppen(例如AIX)查找工具的版本如下:
find . -name "*.dat" -type f -cmin +60 | grep "^./[^/]+dat" | sed "s/^.///"