Ключевой разницей может быть время поиска по гораздо большему объему /storage
. Пусть эта папка на сервере содержит очень большое количество любого рода файлы , которые увеличивают продолжительность требуемой , чтобы найти все dat
файлов в это дерево. Серверная часть /storage
может быть слишком медленным.
Следующая команда может дать вам представление об этом (подсчитывает количество файлов и папок в /storage
):
find /storage | wc -l
Также обратите внимание, что команда, которую вы запускаете, будет искать все файлы *.dat
в качестве первого шага, а затем вызывать chmod
только один раз со всеми соответствующими именами в качестве второго шага.
Вызывать chmod
с 20 аргументами имени файла разумно, но 800 аргументов пути к файлу становится слишком много. Ваша система имеет ограничения по длине аргумента командной строки (см. xargs --show-limits
).
Я бы предложил вам напрямую попросить find
выполнить вашу команду, которая будет разбивать вызовы chmod
на несколько подмножеств. Следующая команда будет вызывать chmod
один раз для каждой папки, содержащей файлы dat
, что представляется разумным:
find /storage -type f -name '*.dat' -execdir chmod 444 '{}' \+
- Для разветвления одного
chmod
на соответствующий файл необходимо заменить \+
на \;
- Чтобы иметь лучшее представление о прогрессии, вы можете добавить аргумент
--changes
или --verbose
в вызов chmod
.