Как печатать так?

Ты очень хотел

mkdir Picturesnew
find Pictures -type f -iname "*.jpg" -exec mv -i {} + Picturesnew/

mv не создает каталоги.

Параметр -i для mv приводит к тому, что он не работает при запуске в таком конвейере. (Хотя, с другой стороны, он, как мы надеемся, сказал mv не топать по всему первому файлу, переименованному в Picturesnew вместо того, каким он был изначально.)

В моем решении я предлагаю find перемещать несколько файлов на каждый экземпляр mv, если это полезно, чтобы свести к минимуму вероятность того, что ошибка, такая как оставление завершающего / off имени целевого каталога и отсутствие создания целевого каталога фактически переименовывает файл, а не генерирует желаемую ошибку. Это также имеет то преимущество, что позволяет mv фактически запрашивать подтверждение перезаписи файла, а не просто принимать следующее имя файла как «нет».

0
09.04.2021, 07:15
2 ответа

Что ж, есть несколько решений для получения новой строки внутри var, но я полагаю, что вы на самом деле спрашиваете об этом:

В новой подсказке

  1. тип строки=один
  2. введите одинарную кавычку 'и нажмите введите
  3. Появится подсказка '>', ожидающая ввода.
  4. тип 'и два
  5. Нажмите , введите , готово.

Конечно, вы можете получить новую строку внутри переменной с помощью:

lines=$'one\ntwo'            # in bash, zsh
lines=$(printf 'one\ntwo')   # in any shell

Например. Если вам нужно больше решений, просто спросите.

1
28.04.2021, 22:53

Вводится как:

lines=one'
'two

т.е. ввод нажимается после первой кавычки.

Поскольку он находится внутри кавычек, bash рассматривает следующую строку ввода (, начинающуюся с завершающей -кавычки ), как часть предыдущей строки. > — это просто подсказка от bash, указывающая, что он готов принять больше ввода, чтобы продолжить предыдущую строку -, она не предназначена для ввода.

Подсказка является значением переменной $PS2, также известной как «вторичная строка подсказки». Это используется для продолжения/дополнительных строк ввода, а $PS1используется для основных строк ввода. Попробуйте declare -p PS1 PS2, чтобы увидеть, как они оба определены в вашей системе -довольно часто люди настраивают свою PS1, но гораздо реже настраивают PS2 (, поэтому, вероятно, по умолчанию> ).

Другой способ сделать то же самое с помощью современной версии bash (и некоторых других -подобных оболочек):

lines=$'one\ntwo'

Использование $'...'вместо '...'указывает bash интерпретировать управляющие коды (как \nдля новой строки )в строке.

4
28.04.2021, 22:53

Теги

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