[英]Single-line Linux command to list symlinks, targets and target dates?
有沒有辦法可以在目錄中生成一個符號鏈接列表,其中包含目標的日期,符號鏈接的名稱和由指定的分隔符分隔的目標名稱?
這些中的任何一個都只給我目標日期和鏈接名稱:
find -L /path/to/dir/* -printf "%TY%Tm%Td%TH%TM%TS|%p\\n"
ls -lH /path/to/dir/*
這個...
find /path/to/dir/* -printf "%TY%Tm%Td%TH%TM%TS|%p|%l\\n"
...我得到鏈接日期,鏈接名稱和目標名稱。 如果我包含`-L'參數, %l
將不返回任何內容,我猜是因為我猜它在鏈接后面會丟失它的引用。
如何從一行命令中獲取鏈接日期 , 鏈接名稱和目標名稱 ?
您可以使用find
的-exec
開關在結果上執行另一個命令(如stat
),從而可以獲取目標文件的屬性。
例:
find /path/to/dir/* -printf "%T@|%p|%l" -exec stat -Lc "|%Y.0000000000" {} \\;
這應該輸出如下:
Link Date|Link Name|Target Name|Target Date
您可能想要使用日期格式字符串來使日期更具人性化。
這是我正在使用的最后一個命令,主要歸功於rc0r :
find /path/to/files/* -printf "%TY%Tm%Td%TH%TM%TS|%p|%l" -exec stat -Lc "|%y" {} \\; | sed -r "s/(.*\\|)([0-9]{4})\\-([0-9]{2})\\-([0-9]{2}) ([0-9]{2})\\:([0-9]{2})\\:([0-9]{2}\\.[0-9]{9}).*/\\1\\2\\3\\4\\5\\6\\7/g"
對r0cr命令的擴充:
find -printf
以提供人類可讀的時間戳而不是Unix時間戳 stat
使用%y
而不是%Y
來提供人類可讀的時間戳而不是Unix時間戳 sed
通過stat
從人類可讀的時間戳輸出中刪除無關字符 這給了我:
SymlinkDate|SymlinkPath|TargetPath|TargetDate
日期采用人類可讀的格式: YYYYMMDDHHMMSS.mmmmmmmmm
我不想象一下, sed
所有回refrences是剝離出字符的目標日期的最有效的方法,但我想不出任何其他的正則表達式只提取[0-9 \\。]。 對於這種特定的實施,效率並不是非常重要。
謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.