You need more information about a file, such as what it is, who owns it, if it’s executable, how many hard links it has, or when it was last accessed or changed.
Use the ls, stat, file, or find commands.
$ touch /tmp/sample_file $ ls /tmp/sample_file /tmp/sample_file $ ls -l /tmp/sample_file -rw-r--r-- 1 jp jp 0 Dec 18 15:03 /tmp/sample_file $ stat /tmp/sample_file File: "/tmp/sample_file" Size: 0 Blocks: 0 IO Block: 4096 Regular File Device: 303h/771d Inode: 2310201 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 501/ jp) Gid: ( 501/ jp) Access: Sun Dec 18 15:03:35 2005 Modify: Sun Dec 18 15:03:35 2005 Change: Sun Dec 18 15:03:42 2005 $ file /tmp/sample_file /tmp/sample_file: empty $ file -b /tmp/sample_file empty $ echo '#!/bin/bash -' > /tmp/sample_file $ file /tmp/sample_file /tmp/sample_file: Bourne-Again shell script text executable $ file -b /tmp/sample_file Bourne-Again shell script text executable
For much more on the find command, see all of Chapter 9.
The command ls
shows only filenames, while -l
provides more details about each file. ls has
many options; consult the manpage on your system for the ones it supports. Useful options include:ls
When using -F
a slash (/)
indicates a directory, an asterisk (*) means the file is executable, an at sign (@) indicates
a symbolic link, a percent sign (%) shows a whiteout, an
equal sign (=) is a socket, and a pipe or vertical bar (|) is a
FIFO.
stat, file, and find all
have many options that control the output format; see the manpages on
your system for supported options. For example, these options produce
output that is similar to ls
-l
:
$ ls -l /tmp/sample_file -rw-r--r-- 1 jp jp 14 Dec 18 15:04 /tmp/sample_file $ stat -c'%A %h %U %G %s %y %n' /tmp/sample_file -rw-r--r-- 1 jp jp 14 Sun Dec 18 15:04:12 2005 /tmp/sample_file $ find /tmp/ -name sample_file -printf '%m %n %u %g %t %p' 644 1 jp jp Sun Dec 18 15:04:12 2005 /tmp/sample_file
Not all operating systems and versions have all of these tools. For example, Solaris does not include stat by default.
It is also worth pointing out that directories are nothing more
than files that the operating system knows to treat specially. So the
commands above work just fine on directories, though sometimes you may
need to modify a command to get the behavior you expect. For example,
using ls -d
to list information about
the directory, rather than just ls
(listing the contents of the directory).
man ls
man stat
man file
man find
18.218.228.99