Если вы посмотрите на типичный вывод ls -lu
,
-rw-r--r-- 1 someuser somegroup 74 Mar 29 05:21 filename
вы заметите, что в общей сложности пять символов пробела предшествуют имени группы. Таким образом, указание поля 6 в команде cut
возвращает группу ("staff" в вашем случае).
Кроме того, день доступа будет полем 7, а не 6 в вашей нотации.
Одним из решений может быть использование awk
, поскольку он обрабатывает множественные повторения разделителя полей так, как вы ожидали по умолчанию:
accessday=$(ls -lu $file | awk '{print $7}')
Заменить ;
на +
в конце.
Из справочной страницы:
-execdir command {} + Аналогично -exec, но указанная команда запускается из подкаталога, содержащего соответствующий файл, который обычно не является каталогом в котором вы начали найти. Это гораздо более безопасный метод вызова команд, поскольку он позволяет избежать условий гонки во время разрешения путей к совпадающим файлам. Как и в случае действия -exec, форма «+» для -execdir будет строить командную строку для обработки более чем одного совпадающего файла, но при любом данном вызове команды будет перечисляться только {{1} }} файлы, которые существуют в том же подкаталоге. Если вы используете эту опцию, вы должны убедиться, что ваша переменная среды $ PATH не ссылается на `. '; в противном случае злоумышленник может выполнить любые команды, которые ему нравятся, оставив файл с соответствующим именем в каталоге, в котором вы запустите -execdir. То же самое относится к имеющим - записям в $ PATH, которые пусты или которые не являются абсолютными именами каталогов. Если find обнаруживает ошибку, это иногда может вызвать немедленный выход , поэтому некоторые ожидающие команды могут вообще не выполняться.