Перебирать список файлов с пробелами - PullRequest
185 голосов
/ 12 августа 2011

Я хочу перебрать список файлов. Этот список является результатом команды find, поэтому я придумал:

getlist() {
  for f in $(find . -iname "foo*")
  do
    echo "File found: $f"
    # do something useful
  done
}

Ничего, кроме случаев, когда в имени файла есть пробелы:

$ ls
foo_bar_baz.txt
foo bar baz.txt

$ getlist
File found: foo_bar_baz.txt
File found: foo
File found: bar
File found: baz.txt

Что я могу сделать, чтобы избежать разделения на пробелы?

Ответы [ 11 ]

0 голосов
/ 22 апреля 2015

В некоторых случаях здесь, если вам просто нужно скопировать или переместить список файлов, вы также можете передать этот список в awk.
Важно \"" "\" вокруг поля $0 (короче, ваши файлы, один список строк = один файл).

find . -iname "foo*" | awk '{print "mv \""$0"\" ./MyDir2" | "sh" }'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...