formato del comando stat para agregar '/' al nombre del archivo si es un directorio y eliminar "./" del frente

formato del comando stat para agregar '/' al nombre del archivo si es un directorio y eliminar "./" del frente

Con el siguiente comando he podido enumerar todos los directorios relativos al directorio actual junto con la última modificación de la época:

find . -exec stat -c '%n: %Y' {} \;

la salida se parece a esto:

.: 1569247414
./a_file.txt: 1561624333
./some_folder: 1561624645
./some_folder/some_file.txt: 1561624645
./some_folder/another_file.txt: 1536557809

¿Cómo puedo deshacerme del "./" que aparece al principio de cada entrada y agregar un "/" si es un directorio?

Como beneficio adicional, deshacerse de la primera entrada '.' que es solo la carpeta actual estaría bien.

Salud

Respuesta1

  • Agregue -mindepth 1para deshacerse de .cuál es la profundidad == 0
  • Alternativa: utilizar find *en lugar defind .
  • Separar archivos de carpetas con-type d ... -or -type f ...
  • Úselo +en lugar de \;para enviar varios archivos a stat; ¡Puede manejarlo y será mucho más rápido!

find * \
-type d -exec stat -c '%n/: %Y' {} + \
-or -type f -exec stat -c '%n: %Y' {} +

PERO...

¡No necesitas -exec statnada!

  • Utilice finds bultin -printfpara imprimir la fecha de la última modificación ( %Cssería el equivalente a stat's %Y).
  • -printf '%P'en lugar de %ptambién le permitirá deshacerse ./del principio de cada nombre de archivo.

find . -mindepth 1 \
-type d -printf '%P/: %Cs\n' \
-or -type f -printf '%P: %Cs\n'

Producción:

a_file.txt: 1561624333
some_folder/: 1561624645
some_folder/some_file.txt: 1561624645
some_folder/another_file.txt: 1536557809

información relacionada