Print a file's last modified date in Bash

后端 未结 10 2137
难免孤独
难免孤独 2020-11-29 18:01

I can\'t seem to find how to print out the date of a file. I\'m so far able to print out all the files in a directory, but I need to print out the dates with it.

I

相关标签:
10条回答
  • 2020-11-29 18:11

    Isn't the 'date' command much simpler? No need for awk, stat, etc.

    date -r <filename>
    

    Also, consider looking at the man page for date formatting; for example with common date and time format:

    date -r <filename> "+%m-%d-%Y %H:%M:%S"
    
    0 讨论(0)
  • 2020-11-29 18:11

    EDITED: turns out that I had forgotten the quotes needed for $entry in order to print correctly and not give the "no such file or directory" error. Thank you all so much for helping me!

    Here is my final code:

        echo "Please type in the directory you want all the files to be listed with last modified dates" #bash can't find file creation dates
    
    read directory
    
    for entry in "$directory"/*
    
    do
    modDate=$(stat -c %y "$entry") #%y = last modified. Qoutes are needed otherwise spaces in file name with give error of "no such file"
    modDate=${modDate%% *} #%% takes off everything off the string after the date to make it look pretty
    echo $entry:$modDate
    

    Prints out like this:

    /home/joanne/Dropbox/cheat sheet.docx:2012-03-14
    /home/joanne/Dropbox/Comp:2013-05-05
    /home/joanne/Dropbox/Comp 150 java.zip:2013-02-11
    /home/joanne/Dropbox/Comp 151 Java 2.zip:2013-02-11
    /home/joanne/Dropbox/Comp 162 Assembly Language.zip:2013-02-11
    /home/joanne/Dropbox/Comp 262 Comp Architecture.zip:2012-12-12
    /home/joanne/Dropbox/Comp 345 Image Processing.zip:2013-02-11
    /home/joanne/Dropbox/Comp 362 Operating Systems:2013-05-05
    /home/joanne/Dropbox/Comp 447 Societal Issues.zip:2013-02-11
    
    0 讨论(0)
  • 2020-11-29 18:17

    Adding to @StevePenny answer, you might want to cut the not-so-human-readable part:

    stat -c%y Localizable.strings | cut -d'.' -f1
    
    0 讨论(0)
  • 2020-11-29 18:19

    I wanted to get a file's modification date in YYYYMMDDHHMMSS format. Here is how I did it:

    date -d @$( stat -c %Y myfile.css ) +%Y%m%d%H%M%S
    

    Explanation. It's the combination of these commands:

    stat -c %Y myfile.css # Get the modification date as a timestamp
    date -d @1503989421 +%Y%m%d%H%M%S # Convert the date (from timestamp)
    
    0 讨论(0)
  • 2020-11-29 18:21

    You can use the stat command

    stat -c %y "$entry"
    

    More info

    %y   time of last modification, human-readable
    
    0 讨论(0)
  • 2020-11-29 18:21

    Best is

    date -r filename +"%Y-%m-%d %H:%M:%S"
    
    0 讨论(0)
提交回复
热议问题