linux生成文件清单,技术|使用 Linux stat 命令创建灵活的文件列表
stat?命令提供了很多關(guān)于文件的詳細(xì)信息。
它不僅提供了文件最近變化的日期/時(shí)間,還顯示了最近訪問文件的時(shí)間和權(quán)限變化。它可以同時(shí)告訴你文件的字節(jié)大小和塊的數(shù)量。它可以顯示文件使用的 inode 以及文件類型。它包括了文件所有者和相關(guān)用戶組的名稱和 UID/GID。它以 “rwx”(被稱為 “人類可讀” 格式)和數(shù)字方式顯示文件權(quán)限。在某些系統(tǒng)中,它甚至可能包括文件創(chuàng)建的日期和時(shí)間(稱為“出生”)。
除了提供所有這些信息外,stat?命令還可以用來創(chuàng)建文件列表。這些列表非常靈活,你可以選擇包含上述任何或全部信息。
要生成一個(gè)自定義列表,你只需要使用?stat?命令的?-c(或?--format)選項(xiàng),并指定你想要包含的字段。例如,要?jiǎng)?chuàng)建一個(gè)以兩種格式顯示文件權(quán)限的列表,使用這個(gè)命令:
$ stat -c '%n %a %A' my*
my.banner 664 -rw-rw-r--
mydir 775 drwxrwxr-x
myfile 664 -rw-rw-r--
myjunk 777 lrwxrwxrwx
mykey 664 -rw-rw-r--
mylog 664 -rw-rw-r--
myscript 755 -rwxr-xr-x
mytext 664 -rw-rw-r--
mytext.bak 664 -rw-rw-r--
mytwin 50 -rw-r-----
mywords 664 -rw-rw-r--
如上例所示,%n?代表文件名,%a?代表八進(jìn)制的權(quán)限,%A?代表?rwx?形式的權(quán)限。完整的列表如后面所示。
要為這個(gè)命令創(chuàng)建一個(gè)別名,輸入這個(gè)命令,或在?.bashrc?文件中添加這個(gè)定義。
$ alias ls_perms="stat -c '%n %a %A'"
要?jiǎng)?chuàng)建一個(gè)非常接近?ls -l?提供的長列表,可以這樣做:
$ stat -c '%A %h %U %G %s %y %n' my*
-rw-rw-r-- 1 shs shs 255 2020-04-01 16:20:00.899374215 -0400 my.banner
drwxrwxr-x 2 shs shs 4096 2020-09-07 12:50:20.224470760 -0400 mydir
-rw-rw-r-- 1 shs shs 6 2020-05-16 11:12:00.460355387 -0400 myfile
lrwxrwxrwx 1 shs shs 11 2020-05-28 18:49:21.666792608 -0400 myjunk
-rw-rw-r-- 1 shs shs 655 2020-01-14 15:56:08.540540488 -0500 mykey
-rw-rw-r-- 1 shs shs 8 2020-03-04 17:13:21.406874246 -0500 mylog
-rwxr-xr-x 1 shs shs 201 2020-09-07 12:50:41.316745867 -0400 myscript
-rw-rw-r-- 1 shs shs 40 2019-06-06 08:54:09.538663323 -0400 mytext
-rw-rw-r-- 1 shs shs 24 2019-06-06 08:48:59.652712578 -0400 mytext.bak
-rw-r----- 2 shs shs 228 2019-04-12 19:37:12.790284604 -0400 mytwin
-rw-rw-r-- 1 shs shs 1983 2020-08-10 14:39:57.164842370 -0400 mywords
不同之處包括: 1、不試圖將字段排成可辨認(rèn)的一列,2、日期是?yy-mm-dd?格式,3、時(shí)間字段更精確,4、增加了時(shí)區(qū)(-0400 是 EDT)。
如果你想根據(jù)最后一次訪問的日期來列出文件(例如,用?cat?命令來顯示),使用這樣的命令:
$ stat -c '%n %x' my* | sort -k2
mytwin 2019-04-22 11:25:20.656828964 -0400
mykey 2020-08-20 16:10:34.479324431 -0400
mylog 2020-08-20 16:10:34.527325066 -0400
myfile 2020-08-20 16:10:57.815632794 -0400
mytext.bak 2020-08-20 16:10:57.935634379 -0400
mytext 2020-08-20 16:15:42.323391985 -0400
mywords 2020-08-20 16:15:43.479407259 -0400
myjunk 2020-09-07 10:04:26.543980300 -0400
myscript 2020-09-07 12:50:41.312745815 -0400
my.banner 2020-09-07 13:22:38.105826116 -0400
mydir 2020-09-07 14:53:10.171867194 -0400
用?stat?列出文件細(xì)節(jié)時(shí),可用的選項(xiàng)包括:
%a?- 八進(jìn)制的訪問權(quán)限(注意?#?和?0?的 printf 標(biāo)志)
%A?– 人類可讀的訪問權(quán)限
%b?– 分配的塊數(shù)(見?%B)
%B?–?%b?報(bào)告的每個(gè)塊的字節(jié)數(shù)
%C?– SELinux 安全上下文字符串
%d?– 十進(jìn)制的設(shè)備編號(hào)
%D?– 十六進(jìn)制的設(shè)備編號(hào)
%f?– 十六進(jìn)制的原始模式
%F?– 文件類型
%g?– 所有者的組 ID
%G?– 所有者的組名
%h?– 硬鏈接的數(shù)量
%i?– inode 編號(hào)
%m?– 掛載點(diǎn)
%n?– 文件名
%N?– 如果是符號(hào)鏈接,會(huì)解引用為指向的文件名
%o?– 最佳 I/O 傳輸大小提示
%s?– 以字節(jié)為單位的總大小
%t?– 十六進(jìn)制的主要設(shè)備類型,用于字符/塊設(shè)備特殊文件
%T?– 十六進(jìn)制的次要設(shè)備類型,用于字符/塊設(shè)備特殊文件
%u?– 所有者的用戶 ID
%U?– 所有者的用戶名
%w?– 文件創(chuàng)建時(shí)間,以人類可讀形式; 如果未知,則為?-。
%W?– 文件創(chuàng)建時(shí)間,以 UNIX 紀(jì)元以來的秒數(shù)形式;如果未知,則為?0。
%x?– 上次訪問時(shí)間,以人類可讀形式
%X?– 上次訪問時(shí)間,以 UNIX 紀(jì)元以來的秒數(shù)形式
%y?– 上次數(shù)據(jù)修改時(shí)間,以人類可讀形式
%Y?– 上次數(shù)據(jù)修改時(shí)間,以 UNIX 紀(jì)元以來的秒數(shù)形式
%z?– 上次狀態(tài)改變的時(shí)間,以人類可讀形式
%Z?– 上次狀態(tài)改變的時(shí)間,以 UNIX 紀(jì)元以來的秒數(shù)形式
這些字段的選擇都列在手冊(cè)頁中,你可以選擇任何一個(gè),不過用你喜歡的選項(xiàng)創(chuàng)建一些別名應(yīng)該可以省去很多麻煩。有些選項(xiàng),如 SELinux 安全上下文字符串,除非在系統(tǒng)中有使用,它將不可用。文件創(chuàng)建時(shí)間只有在你的系統(tǒng)保留該信息的情況下才可用。
本文由?LCTT?原創(chuàng)編譯,Linux中國?榮譽(yù)推出
總結(jié)
以上是生活随笔為你收集整理的linux生成文件清单,技术|使用 Linux stat 命令创建灵活的文件列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骨传导耳机原理是什么、怎么区分真正的骨传
- 下一篇: Linux编写c程序计算圆的面积,c语言