Почему вы не используете grep и не сопоставляете имя файла с отметкой времени?
grep -P "[0-9]{2}:[0-9]{2} $FILENAME(\.[a-zA-Z0-9]+)?$"
[0-9]{2}:[0-9]{2}
- это время, $FILENAME
- то, куда вы положите rob rob
или rwx
, а конечный (\.[a-zA-Z0-9]+)?
должен допускать необязательное расширение.
Редактировать : @JonathanLeffler ниже указывает, что когда файлы старше 6 месяцев, столбец временизаменяется на год - это то, что происходит на моем компьютере в любом случае.Вы можете сделать ([0-9]{2}:[0-9]{2}|(19|20)[0-9]{2})
, чтобы указать время ИЛИ год, но вам лучше всего использовать awk (?).
[foo@bar ~/tmp]$ls -al
total 8
drwxrwxr-x 2 foo foo 4096 Mar 5 09:30 .
drwxr-xr-- 83 foo foo 4096 Mar 5 09:30 ..
-rw-rw-r-- 1 foo foo 0 Mar 5 09:30 foo foo
-rw-rw-r-- 1 foo foo 0 Mar 5 09:29 rwx.c
-rw-rw-r-- 1 foo foo 0 Mar 5 09:29 tmp
[foo@bar ~/tmp]$export filename='foo foo'
[foo@bar ~/tmp]$echo $filename
foo foo
[foo@bar ~/tmp]$ls -al | grep -P "[0-9]{2}:[0-9]{2} $filename(\.[a-zA-Z0-9]+)?$"
-rw-rw-r-- 1 cha66i cha66i 0 Mar 5 09:30 foo foo
(Вы можете дополнительно расширить соответствие всей строке, если хотите:
^ # start of line
[d-]([r-][w-][x-]){3} + # permissions & space (note: is there a 't' or 's'
# sometimes where the 'd' can be??)
[0-9]+ # whatever that number is
[\w-]+ [\w-]+ + # user/group (are spaces allowed in these?)
[0-9]+ + # file size (modify for -h switch??)
(19|20)[0-9]{2}- # yyyy (modify if you want to allow <1900)
(1[012]|0[1-9])- # mm
(0[1-9]|[12][0-9]|3[012]) + # dd
([01][0-9]|2[0-3]):[0-6][0-9] +# HH:MM (24hr)
$filename(\.[a-zA-Z0-9]+)? # filename & optional extension
$ # end of line
. Вы получаете точку, адаптированную к вашим потребностям.)