Мне нелегко решать эту проблему.
запишите сценарий оболочки для проверки исполняемых прав на все файлы в текущем каталоге. если файл не имеет пользовательского исполняемого файла, прямо тогда делают это пользовательским исполняемым файлом.
Я думал если цикличное выполнение на всех файлах в текущем каталоге и писал вывод в текстовый файл. затем чтение четвертого символа каждой строки и проверяет, является ли это 'x' или '-'
Идея, которую Вы имеете, кажется законной, но излишне большой и сложный, скорее можно использовать это:
#!/bin/bash
for file in *; do
[[ -x $file ]] || chmod u+x "$file"
done
Это считает все файлы (*
) в текущем каталоге
Тогда, он проверит, является ли файл исполняемым файлом пользователем, выполняющим сценарий ([[ -x $file ]]
)
, Если не (||
), он сделает исполняемый файл файла для пользователя (chmod u+x "$file"
).
значением по умолчанию *
не будет соответствовать скрытым файлам, для соответствия скрытым файлам также добавляют строку
shopt -s dotglob
после строки хижины.
, Если Вы хотите искать и воздействовать только на регулярные файлы:
#!/bin/bash
for file in *; do
if [[ -f $file ]]; then
[[ -x $file ]] || chmod u+x "$file"
fi
done
Это - простое find
команда с chmod
:
find . -type f ! -perm -u+x -exec chmod u+x {} \;
или только для текущей папки:
find . -maxdepth 1 -type f ! -perm -u+x -exec chmod u+x {} \;
<час> Объяснение
.
Запускают поиск в текущей папке
-maxdepth
Не рекурсивный
-type f
Только файлы, никакие папки
! -perm -u+x
Только файлы без исполняемого флага для владельца Набора файла
-exec chmod u+x {}
исполняемый флаг для владельца файла
Мне жаль, что Вы не упомянули, является ли это часть большего проекта автоматизации или просто чего-то, что Вы хотите сделать.
Можно просто сделать следующее в каталоге:
chmod u+x *
Это добавляет исполняемое состояние ко всем файлам в папке для "Вашего пользователя". Можно попытаться добавить его для "всех"
chmod a+x *
Отметьте, у Вашего пользователя должно быть разрешение изменить файлы в той определенной папке. Это означает, что у Вас должно быть разрешение 'записи'. Иначе Вы не сможете изменить что-либо. Если Ваш пользователь является администратором, можно вызвать его с sudo
команда:
sudo chmod a+x *
Если файл уже имеет исполняемое состояние, нет никакого вреда в предоставлении его состояние снова. Конечно, как я сказал, если Вы не хотите использовать название всех файлов, состояние которых изменяется для другой цели, например, создания отчетов. сценарий heemayl является хорошей вещью в таких целях.
Добавленный из комментариев Mostafa Najafiyazdi
[..] если он не хочет касаться разрешения папок, которые не имеют никакого исполняемого разрешения, он не должен использовать chmod u+x *
[..]