Bash
如何提取長列表欄位?
我想在 shell 腳本中提取文件的訪問日期。我嘗試編寫以下腳本,但它不起作用。當我回顯accessday時,輸出是“員工”。
file=$1 accessday=$(ls -lu $file | cut -d ' ' -f 6)
這是一份工作
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}')