Проблема в том, что ваши имена файлов содержат новую строку, например aaa \ nbbb
, а ваш find | Метод чтения
не может отличить это от двух файлов, aaa
и bbb
.
Обычный ответ на этот вопрос - заставить find
разделять имена файлов символом nul \ 0
, используя find -print0
, а затем используя IFS = read -r -d '' FILENAME
, чтобы прочитать этот входной поток. -d ''
указывает read использовать символ нуля в качестве разделителя строк, -r
останавливает обработку обратной косой черты, а IFS =
сохраняет пробелы в начале и в конце.
Вам не нужен сценарий оболочки. Одна команда find
будет искать файлы и перемещать их :
read -r mam
find "$mam" -type f -size +10k -exec mv {} /home/patakinorbert/Desktop/prk1 \;
Слова между -exec
и \;
— это команда, которая выполняется для каждого найденного файла, где {}
заменено именем найденного файла.
В системе Linux, такой как Ubuntu, или любой другой системе, использующей инструменты GNU, более эффективной версией этой команды является:
read -r mam
find "$mam" -type f -size +10k -exec mv -t /home/patakinorbert/Desktop/prk1 +
Это более эффективно, поскольку перемещает несколько файлов, используя один вызов mv
.