Sha*_*ash 13 unix bash command
我在目录中有一组文件.我需要查找一组特定日期的文件(例如,如果我需要1月16日至1月20日的文件).我尝试过使用ls -ltr | grep <date>但是要完成选择文件需要太多步骤.有没有更简单的方法来完成这项工作.谢谢!
pax*_*blo 20
我不确定你的目录中有多少文件,但这样的东西应该非常快:
ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 20 {print $9}'
Run Code Online (Sandbox Code Playgroud)
在我的系统上,我看到以下日期略有修改:
pax> ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 29 {print $9}'
kids_shares.ods
our_savings.gnumeric
photos
pax> ls -ald kids_shares.ods our_savings.gnumeric photos
-rw-r--r-- 1 pax pax 51005 Jan 29 19:39 kids_shares.ods
-rw-r--r-- 1 pax pax 2275 Jan 28 14:48 our_savings.gnumeric
drwxrwxrwx 130 pax pax 4096 Jan 29 21:47 photos
Run Code Online (Sandbox Code Playgroud)
您可以看到日期与给定文件匹配.
需要注意的一件事是:如果文件是最近的,它将在第8列中有时间.超过某个年龄,ls开始将年份放在那里.我有一个模糊的回忆,它是在六个月大的边界附近,但我不是绝对肯定的.你也需要照顾它.
wic*_*ich 11
find(1)相反,使用会更容易.
find . -mtime -$start -mtime +$end
Run Code Online (Sandbox Code Playgroud)
你最好不要使用find.首先创建两个具有特定时间的临时文件以进行搜索.touch可以做到这一点:
touch -t "201301160001" ./start
touch -t "201301202359" ./finish
Run Code Online (Sandbox Code Playgroud)
然后运行find:
find /path/to/files -type f -newer ./start ! -newer ./finish
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50882 次 |
| 最近记录: |