Intereting Posts
Что такое синхронизация во время загрузки ядра? Скопируйте длинный однострочный текст с терминала с нежелательной строкой изменения Как вызвать jq внутри awk? Как создать интерактивный скрипт bash для сбора аргументов для команды в Linux? Процессы nonsudo kill соответствуют строке Перемещение файла / таблицы путем усреднения столбца Как найти размер страницы физических памятей из пользовательского пространства? kswapd0 занимает от 99% до 100% процессора в RHEL 6.3 Имя файла устройства CDC заблокировано после отключения модема Проблема с модемом USB 3G / 4G Найти, когда жесткий диск был впервые установлен Подберите patternA и напечатайте его только тогда, когда сопоставляется patternB, включая следующую строку awk – пропустить первую строку записи История поиска bash для уже введенной команды Временное окно все еще существует, когда сигнал не заблокирован

Переменная в команде find задана новой переменной в bash

Можно ли сделать что-то вроде этого:

inputNum="$1" files=($(find /dir/to/check -mtime $inputNum)) 

В принципе, идея состоит в том, что я могу использовать входной параметр, чтобы установить количество дней для поиска файлов и установить его в массив переменных. Я не уверен в синтаксисе, чтобы сделать это доступным для чтения в bash.

Результат find не -print0 надежно, если вы не используете -print0 вместо -print ( -print подразумевается, когда не указано действие).

Чтобы find -print0 пост-обработку вывода find -print0 и сохранить пути к файлу в массиве:

С bash4.4 +:

 readarray -td '' files < <(find /dir/to/check -mtime "$inputNum" -print0) 

Со старыми версиями:

 files=() while IFS= read -rd '' file; do files=("${files[@]}" "$file") done < <(find /dir/to/check -mtime "$inputNum" -print0) 

В более общем плане вы хотели бы прочитать рекомендации по: Почему циклическая обработка результатов поиска неэффективна?

Если вы можете использовать zsh вместо bash, то это намного проще. Zsh может сопоставлять файлы на основе их атрибутов с помощью квалификаторов glob .

 files=(/dir/to/check/**/*(Dm$inputNum)) 

**/* рекурсивно ищет подкаталоги. Скобки после * содержат glob-классификаторы: D для включения точечных файлов и m для сопоставления файлов в зависимости от времени их модификации в днях, таких как find -mtime (вы также можете выбрать другой блок и сделать ограничение времени, например (Dmm-$min) действует как find -mmin -$min ).

Zsh предварительно установлен на macOS. В большинстве других систем Unix (в частности, в большинстве дистрибутивов Linux) он доступен как пакет, но не установлен по умолчанию.