我在用|分類閱讀訂購的文件。但是當我做使用find讀取最新文件名
files=($(find /test/ | sort))
在目錄/測試,我得到的文件名以不同的順序。
ls -lhtr
我該如何獲取文件名以相同的方式排序ls -lhtr?我想先閱讀最新的文件名..
我在用|分類閱讀訂購的文件。但是當我做使用find讀取最新文件名
files=($(find /test/ | sort))
在目錄/測試,我得到的文件名以不同的順序。
ls -lhtr
我該如何獲取文件名以相同的方式排序ls -lhtr?我想先閱讀最新的文件名..
將多個註釋轉換爲答案。
您必須安排打印修改時間以及可排序格式的名稱(例如YYYY-mm-dd HH:MM:SS日期+時間或Unix時間戳 - 秒自1970-01-01 00:00:00 +00:00)。一個簡單的排序會產生最後的最後一個順序,如ls -lhtr
會給你。調查GNU find
中的-printf
- 它可以適當地打印修改時間。
我正在使用
find /test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -n
,但我得到的是最早的文件。我應該怎麼做最先得到的?
你的建議看起來似乎似乎合理,但你不想做數字排序。 ISO 8601格式日期使用常規排序進行排序。因此:
find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort
應該工作,首先列出最舊的文件,只要您沒有名稱中帶有換行符的文件。
如果您想要以最新的優先順序,您需要按相反的時間順序進行排序,所以sort -r
而不是僅僅是sort
。
find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -r
請注意,這與ls -lhtr
提供的順序相反,該順序列出了最新的最後一個文件。
您必須安排以可排序的格式打印修改時間以及名稱(例如,日期+時間的YYYY-mm-dd HH:MM:SS或Unix時間戳記 - 自1970年以來的秒數-01-01 00:00:00 +00:00)。一個簡單的排序會產生最後的最後一個順序,就像'ls -lhtr'會給你的那樣。調查'find'中的'-printf'是否可以適當地打印修改時間。 –
@JonathanLeffler,我正在使用 'find/test/-printf「%TY-%Tm-%Td%TT%p \ n」| | sort -n' 但我最先得到最早的文件..我應該怎麼做最先得到最新的? – jimmy
將代碼用反引號括起來。你的建議看起來幾乎是合理的,但你不想做數字排序。 ISO 8601格式日期使用常規排序進行排序。因此:'find/sapfiler/WEBADM/test/-printf'%TY-%Tm-%Td%TT%p \ n「|排序'應該工作,只要你沒有在名稱中帶有換行符的文件。 –