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

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

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



Последнее исправление: alex2020 (всего исправлений: 1)

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

anonymous
()

sha256sum «$i»

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

Нет.

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

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

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.