¿Cómo puedo formatear una lista de archivos con nombres de directorio en Unix?

2022-10-06 23:23:39

Tengo un comando de búsqueda que estoy usando en una secuencia de comandos para enumerar los archivos archivados para una semana determinada, comenzando todos los sábados. El guión funciona muy bien, pero hay algo de formato que me gustaría si es posible.

Los archivos enumerados son archivos archivados, pero no necesito el nombre de directorio "archivo" en mi lista (como se muestra en la salida del script).

Para la variable que estoy usando en el comando de búsqueda, usé la función: fecha +"%b %d" -d "el sábado pasado". Esto me da el último sábado tal como dice.

Cualquier ayuda o consejo sería genial.

--USES DAYOFWEEK variable TO GET THE LAST SATURDAY; THEN GETS      
--FILES WITH A MODIFED DATE FOR THAT SATURDAY OR NEWER  

find . -newermt "$DAYOFWEEK"  -printf "%TY-%Tm-%Td %TI:%TM %f\n" 

salida del guión

2016-02-01  10:10  dir_name1
2016-02-01  10:10  archive
2016-02-01  07:58  file1.txt
2016-02-01  07:58  file2.txt
2016-02-02  07:58  file3.txt
2016-02-02  07:58  file4.txt
2016-02-01  10:10  dir_name2
2016-02-01  10:10  archive
2016-02-01  07:58  file12.txt
2016-02-01  07:58  file22.txt
2016-02-02  07:58  file32.txt
2016-02-02  07:58  file42.txt

Me gustaría que tuviera este formato (en orden alfabético por nombre de cliente, luego del archivo más antiguo al más nuevo):

dir_name1
2016-02-01  07:58  file1.txt
2016-02-01  07:58  file2.txt
2016-02-02  07:58  file3.txt
2016-02-02  07:58  file4.txt

dir_name2

2016-02-01  07:58  file12.txt
2016-02-01  07:58  file22.txt
2016-02-02  07:58  file32.txt
2016-02-02  07:58  file42.txt

- Will Jordan

Source
zh
Responder


1
  • Lo que buscas no se puede hacer con un solo comando, no lo creo

    No tengo tiempo para intentar recrear una estructura de directorios que coincida con la suya y llenarla con archivos, pero creo que este enfoque debería funcionar para usted...

    find . -newermt "$DAYOFWEEK" -type f  -printf "%TY-%Tm-%Td %TI:%TM %h %f\n"| sort -t' ' -k3,3 -k1,2  |  awk 'BEGIN{old=""} {if ( != old){print "";print ;print " "}else{print " "};old=}'