如果我ls -l在一个目录中并得到:
-rwxr-x--- 1 user1 admin 0 8 Aug 2012 file.txt
-rwxr-x--- 1 user1 admin 1733480 26 Jul 2012 Archive.pax.gz
drwxr-x---@ 7 user1 admin 238 31 Jul 2012 Mac Shots
-rwxr-x---@ 1 user3 admin 598445 31 Jul 2012 Mac Shots.zip
-rwxr-x---@ 1 user1 admin 380 6 Jul 2012 an.sh
-rwxr-x--- 1 user2 admin 14 30 Jun 2012 analystName.txt
-rwxr-x--- 1 user1 admin 36 8 Aug 2012 apple.txt
drwxr-x---@ 7 user1 admin 238 31 Jul 2012 iPad Shots
-rwxr-x---@ 1 user1 admin 7372367 31 Jul 2012 iPad Shots.zip
-rwxr-x--- 1 user2 admin 109 30 Jun 2012 test.txt
drwxr-x--- 3 user1 admin 102 26 Jul 2012 usr
Run Code Online (Sandbox Code Playgroud)
但是只想列出"user1"所拥有的文件,这些文件在"Aug"中被修改得到
-rwxr-x--- 1 user1 admin 0 8 Aug 2012 file.txt
-rwxr-x--- 1 user1 admin 36 8 Aug 2012 apple.txt
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法?
解析ls输出永远不是一个好的和可靠的解决方案.ls是一种交互式查看文件信息的工具.它的输出格式化为人类,并将导致脚本中的错误.使用globs或代替.了解原因:http://mywiki.wooledge.org/ParsingLs
相反,你可以尝试:
find . -type f -user 'user1' -maxdepth 1
Run Code Online (Sandbox Code Playgroud)
要么
find . -type f -printf '%u %f\n' -maxdepth 1 # if you want to show the username
Run Code Online (Sandbox Code Playgroud)
要么
stat -c '%U %f' * | cut -d" " -f2-
Run Code Online (Sandbox Code Playgroud)
看到
man find
man stat
Run Code Online (Sandbox Code Playgroud)