簡體   English   中英

用於列出符號鏈接,目標和目標日期的單行Linux命令?

[英]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命令的擴充:

  1. 格式化find -printf以提供人類可讀的時間戳而不是Unix時間戳
  2. stat使用%y而不是%Y來提供人類可讀的時間戳而不是Unix時間戳
  3. Piped sed通過stat從人類可讀的時間戳輸出中刪除無關字符

這給了我:

SymlinkDate|SymlinkPath|TargetPath|TargetDate

日期采用人類可讀的格式: YYYYMMDDHHMMSS.mmmmmmmmm

我不想象一下, sed所有回refrences是剝離出字符的目標日期的最有效的方法,但我想不出任何其他的正則表達式只提取[0-9 \\。]。 對於這種特定的實施,效率並不是非常重要。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM