Ты очень хотел
mkdir Picturesnew
find Pictures -type f -iname "*.jpg" -exec mv -i {} + Picturesnew/
mv не создает каталоги.
Параметр -i для mv приводит к тому, что он не работает при запуске в таком конвейере. (Хотя, с другой стороны, он, как мы надеемся, сказал mv не топать по всему первому файлу, переименованному в Picturesnew вместо того, каким он был изначально.)
В моем решении я предлагаю find перемещать несколько файлов на каждый экземпляр mv, если это полезно, чтобы свести к минимуму вероятность того, что ошибка, такая как оставление завершающего / off имени целевого каталога и отсутствие создания целевого каталога фактически переименовывает файл, а не генерирует желаемую ошибку. Это также имеет то преимущество, что позволяет mv фактически запрашивать подтверждение перезаписи файла, а не просто принимать следующее имя файла как «нет».
Что ж, есть несколько решений для получения новой строки внутри var, но я полагаю, что вы на самом деле спрашиваете об этом:
В новой подсказке
'
и нажмите введитеКонечно, вы можете получить новую строку внутри переменной с помощью:
lines=$'one\ntwo' # in bash, zsh
lines=$(printf 'one\ntwo') # in any shell
Например. Если вам нужно больше решений, просто спросите.
Вводится как:
lines=one'
'two
т.е. ввод нажимается после первой кавычки.
Поскольку он находится внутри кавычек, bash рассматривает следующую строку ввода (, начинающуюся с завершающей -кавычки ), как часть предыдущей строки. >
— это просто подсказка от bash, указывающая, что он готов принять больше ввода, чтобы продолжить предыдущую строку -, она не предназначена для ввода.
Подсказка является значением переменной $PS2
, также известной как «вторичная строка подсказки». Это используется для продолжения/дополнительных строк ввода, а $PS1
используется для основных строк ввода. Попробуйте declare -p PS1 PS2
, чтобы увидеть, как они оба определены в вашей системе -довольно часто люди настраивают свою PS1, но гораздо реже настраивают PS2 (, поэтому, вероятно, по умолчанию>
).
Другой способ сделать то же самое с помощью современной версии bash (и некоторых других -подобных оболочек):
lines=$'one\ntwo'
Использование $'...'
вместо '...'
указывает bash интерпретировать управляющие коды (как \n
для новой строки )в строке.