LINUX.ORG.RU

Работа с файлами, в названии, которых есть пробелы

 ,


0

2

Есть файлы, в названиях которых присутствуют пробелы:

$ find . -name "*__*" -type f
./______________ ________________ - _____________ __________, ____________________ __________ __________.fb2
./____________ ______________ - ____________ __________ ______.fb2
./____________ ____________ - __ ____________, ____ ______________ ________.fb2
./________ __________ - ______________ __________ ________________________.fb2
./________________ ________ - __________________.fb2
./__________ __________ - __________ ____________.fb2
./____________________ ______________ - ______________.fb2

Пытаюсь пройтись по ним циклом, чтобы получить их хэши и записать в файл «хэш - название». Примерно так:

$ for i in $(find . -name "*__*" -type f); do sha256sum $i >> file; done
sha256sum: ./______________: Нет такого файла или каталога
sha256sum: ________________: Нет такого файла или каталога
^C

Из-за пробелов в названиях сделать это не удается.

Можно ли как-то реализовать это без переименования файлов, а с использованием кавычек в командах? Спасибо!

Можно, если правильно использовать команду find и кавычки.

anonymous ()
for i in path/to/ebooks/*__*; do sha256sum "$i" >> file; done
anonymous ()
Ответ на: комментарий от anonymous

Нет.

"-exec" - это запуск на каждый файл, а xargs это гибкое решение позволяющее и число аргументов ограничить/указать и даже запускать параллельно N процессов обработки.

Единственная польза от exec - это если аргумент не последний в команде.

vel ★★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей