Я намагаюся зрозуміти, чому я отримую різний вихід з однієї і тієї ж команди, запущеної на одному файлі в терміналі (Mac OS X 10.6.8) і запускаюсь на більш ніж один файл. Оскільки я хочу запустити команду в скрипті bash, я намагаюся отримати стійкі результати при запуску одного файлу за один раз.
Команда, що задає мені проблему
ls -l "filename" | cut -f8 -d' '
Я намагаюся ізолювати розмір файлу.
Здається, це працює для файлів без розширених дозволів (наприклад, перше поле "-rw-r - r--"), але для тих, хто має розширені дозволи (наприклад, перше поле "-rwxrwxrwx @"), мені потрібно вирізати -f7 -d ''
Цікаво, якщо я підбираю файл кожного типу та запускаю:
ls -l "filename1" "filename2" | cut -f8 -d' '
він без проблем повертає розмір файлів для обох файлів. Я не розумію, чому це повинно статися ... але, звичайно, в моєму сценарії я роблю цей файл за один раз.
Я спробував використовувати sed для видалення подвоєного пробілу та подвоєних вкладок, і це змінює номер поля, необхідний для надання розміру файлу, але все одно, здається, він дає результати, які залежать від того, чи мають вони розширені дозволи файлів.
Я включаю цикл while з мого сценарію для довідки, але його легко прочитати, оскільки розмір файлу - лише одне з 4 розділених двокрапкою полів, які я вставляю.
#!/bin/bash
# lots of other stuff here including specifying input (which is a list of filenames with complete paths) and output files ...
while IFS= read -r line
do
echo "$line":`exiftool -all= -o - "$line" | md5`:`md5 "$line" | cut -f2 -d'=' | sed -e 's/^[ \t]*//'`:`ls -l "$line" | cut -f8 -d' '` >> "$outputfile"
done < "$file"
Хтось може допомогти кинути на мене це світло?