в
как соединить ls и openssl, чтобы применить к каждому файлу

о
Для того чтобы применить команду openssl к каждому файлу в директории, лучше всего использовать цикл for или утилиту xargs вместо прямого вывода ls. Использование ls напрямую в конвейере может привести к ошибкам, если в именах файлов есть пробелы.

Ниже приведены основные варианты для различных задач (шифрование, расшифровка, хэширование). Замените openssl aes-256-cbc ... на нужную вам команду.

Вариант 1: Цикл for (самый надежный)

Этот метод безопасен для имен файлов, содержащих пробелы, и позволяет легко настраивать имена выходных файлов.

Для всех файлов в текущей директории:

for f in *; do if [ -f "$f" ];
then openssl aes-256-cbc -in "$f" -out "${f}.enc" -k "pass"
fi
done

Вариант 2: Использование find и xargs (для поиска по поддиректориям)

Утилита xargs отлично подходит для передачи списка файлов в openssl. Флаг -I {} позволяет подставлять имя файла в нужную часть команды.

Для шифрования файлов (с расширением .txt) в текущей директории и всех вложенных:

find . -type f -name "*.txt" -print0 | xargs -0 -I {} openssl enc -aes-256-cbc -in {} -out {}.enc -k pass

Примеры применения openssl для каждого файла:

Шифрование каждого файла:

for f in *; do [ -f "$f" ] && openssl enc -aes-256-cbc -salt -in "$f" -out "${f}.enc" -pass pass:pass; done

Получение контрольной суммы (например, 256) для каждого файла:

for f in *; do [ -f "$f" ] && openssl dgst -sa256 "$f"; done
