Bash

如何提取長列表欄位?

  • March 30, 2016

我想在 shell 腳本中提取文件的訪問日期。我嘗試編寫以下腳本,但它不起作用。當我回顯accessday時,輸出是“員工”。

file=$1
accessday=$(ls -lu $file | cut -d ' ' -f 6)

不要解析ls

這是一份工作stat

要以人類可讀格式獲取最後訪問時間:

stat -c '%x' file.txt

自紀元以來的秒數:

stat -c '%X' file.txt

如果您查看 的典型輸出ls -lu

-rw-r--r--  1 someuser  somegroup  74 Mar 29 05:21 filename

您會注意到組名前總共有五個空格字元。因此,您在命令中對欄位 6 的規範將cut返回組(在您的情況下為“員工”)。

此外,訪問日將是欄位 7,而不是您的符號中的 6。

一種解決方案是使用awk,因為它以您預設的方式處理欄位分隔符的多次出現:

accessday=$(ls -lu $file | awk '{print $7}')

引用自:https://unix.stackexchange.com/questions/272765