我的老师给我布置了一项关于结合 find 和 file 的作业
使用 find 和 file 显示 /home 子目录树中的所有文件,以及猜测它们是什么类型的文件。
我尝试使用管道,但效果不如我想象的那样。关于如何结合这两个命令,您有什么想法吗?谢谢!=)
答案1
这里有个提示。您可以使用该file
命令作为该命令的参数find
。下面是我的命令帮助的输出find
。查看“操作”部分,了解如何将该file
命令与该find
命令一起使用。
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:
operators (decreasing precedence; -and is implicit where no others are given):
( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2
positional options (always true): -daystart -follow -regextype
normal options (always true, specified before other expressions):
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
--version -xdev -ignore_readdir_race -noignore_readdir_race
tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
-readable -writable -executable
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NAME -xtype [bcdpfls]
actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;
Report (and track progress on fixing) bugs via the findutils bug-reporting
page at http://savannah.gnu.org/ or, if you have no web access, by sending
email to <[email protected]>
。
答案2
你应该做你的作业但无论如何你的问题是......
find /home -type f -exec file {} \;
-type 指定结果(f 代表文件) -exec 执行程序 {} 是文件的名称
答案3
更好更有效的解决方案:
find /home -type f -print0 | xargs -0 file
上述实现假定了 find 的更高版本和 Linux 实现。-print0 允许文件名中包含特殊保留字符的情况...例如空格!