Ключевой разницей может быть время поиска по гораздо большему объему /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 .