Как изменить значок панели?

Если вы еще не поняли, разбор ls - это плохая идея. Если вы не можете знать, что имена ваших файлов всегда будут нормальными (вы, как правило, не можете), вам нужно иметь дело с именами файлов, содержащими:

пробелы и вкладки последовательных пробелов или строк новых строк () возврат каретки (\r) обратная косая черта (\)

Все вышеперечисленное разрешено ядром Linux (и, как гарантируется, сбой вашего sysadmin mad). Следующие два метода могут иметь дело с любой комбинацией вышеуказанного. Я использую cp file directory/ в качестве примера команды):

Используйте find и его -exec вариант, {} будет заменен каждым найденным файлом или каталогом.
find . -exec cp {} directory/
Результаты поиска трубы в xargs в виде нулевых разделенных строк (-print0), скажите xargs, чтобы прочитать нулевой раздел (-0) и сообщить ему заменить {} на каждое имя файла / каталога (-I {} ]).
find . -print0 | xargs -0 -I {} cp {} directory/
Используйте только оболочку, чтобы также совместить dotfiles, активируйте dotglob
 shopt -s dotglob
 for i in *; do cp -v "$i" directory/; done
Объедините мощность find и универсальность оболочки
find . -print0 | while IFS= read -r -d '' i; do cp "$i" directory/; done
. IFS= отключает разделение в пробелах, -r отключает обратную косую черту (позволяет обратную косую черту обрабатывать буквально), -d '' устанавливает разделитель записи (строки, если хотите) в значение null.
1
задан 20 September 2016 в 20:08

0 ответов

Другие вопросы по тегам:

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