Unix`find`命令返回路径以及它是否是文件/目录?

时间:2013-02-06 04:23:13

标签: file shell unix

当你执行ls -la时,它会返回每个路径以及它是否是文件/目录的信息:

$ ls -la
drwxr-xr-x  11 viatropos  staff   374 Jan 21 21:24 .
drwxr-xr-x  41 viatropos  staff  1394 Feb  2 00:48 ..
-rw-r--r--   1 viatropos  staff    43 Jan 21 21:23 .gitignore
-rw-r--r--   1 viatropos  staff    43 Jan 21 21:23 .npmignore
-rw-r--r--   1 viatropos  staff   647 Jan 21 21:23 README.md
-rw-r--r--   1 viatropos  staff  3069 Feb  5 20:17 index.js
drwxr-xr-x   8 viatropos  staff   272 Feb  5 20:06 node_modules
-rw-r--r--   1 viatropos  staff   291 Jan 21 21:24 package.json
drwxr-xr-x   4 viatropos  staff   136 Jan 21 21:23 test

有没有办法使用find命令(以及glob *功能)来执行此操作?那么,查找node_modules中的所有路径并让它返回路径以及它是否是文件目录?类似的东西:

$ find node_modules -name 'lib/*'
d  node_modules/express/lib/
f  node_modules/express/lib/index.js
...

2 个答案:

答案 0 :(得分:2)

find ... -printf '%y %p\n'怎么样? (不过,这可能是GNU查找扩展。)

答案 1 :(得分:0)

尝试这个脚本,我称之为#34; findfl"。 " mtime"子句查找在过去3天内更改的文件。

目录将有" /"追加。

#!/bin/sh
# find files produced recently, matching input pattern
[ $1 ] || { echo "Usage: findfl <file-name-pattern>" ; exit ; }

TOPDIR=/home/usr/fred     #the directory you want to search
echo "Searching $TOPDIR"
find . -mtime -3 -name *$1* 2>/dev/null | xargs -n 99 ls -lptr | sed "s! ./! $TOPDIR/!g"