wolverine777
@wolverine777

Как сделать loop по директориям с пробелами?

Привет, допустим мне нужно собрать все файлы с расширением .txt отовсюду с моего компа.

Я сначала установил чрезвычайно удобную locate

sudo apt-get install locate
а потом следующий скрипт

#!/bin/bash

for book in $(locate .txt)
do
	echo "cp ${book} /mnt/e/BOOK"
done


выполняется лишь когда в исходной папке\файле нет пробелов - и таким образом найденный файл благополучно копируется в указанную папку.

Если же пробел есть - путь рвётся и все плохо.

Наверняка есть какое-то просто решение?

Спасибо!
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 2
shambler81
@shambler81 Куратор тега Linux
find . -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)" -print0 | xargs -0 cp --parents --target-directory ./tmp/backup

с сохранением структуры
find . -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)" -print0 | xargs -0 cp ./tmp/backup

без
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Наверняка есть какое-то просто решение?

Классика же, разделять имена нулями:
locate -0 '.txt' | xargs -0 -I\{} echo 'cp "{}" /mnt/e/BOOK'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы