Есть ли команда bash для получения 5-го поля в выводе, разделенного табуляциями?

#bash #cut

#bash #вырезать

Вопрос:

Я пишу скрипт bash, чтобы получить размер файла. Я использовал следующее:

 ls -lah $1 | cut -d t -f 5
 

ls -lah $1 Выводит что-то вроде следующего:

 -rw-r--r--  1 paolosecci  staff   5.2M Apr 16 19:27 file.txt
 

Я хочу передать этот вывод и выбрать только «5.2M»

Комментарии:

1. ls не использует табуляции в своем выводе. Почему ты не пользуешься du -sb $1 ? du имеет множество других полезных опций, а также.

2. Не разбирайте ls . Используйте stat или find .

Ответ №1:

Вот один из способов сделать это..

 ls -lah $1 | awk '{print $5}'
 

Ответ №2:

См https://mywiki .wooledge.org/ParsingLs .

Вместо этого используйте

 stat -f '%z' "$1"