просто поместите следующее в начало ~/.bashrc для имени пользователя id на удаленной машине, если этот id использует bash
# If not running interactively, don't do anything and return early
[[ $- == *i* ]] || return
, который просто рано выходит из ~/.bashrc вместо поиска всего файла... это решает проблему молчания.bashrc, когда вы не входите в систему с этим идентификатором, а просто запускаете свой scp или sftp с этим именем пользователя в качестве удаленный идентификатор... процитировать @Peter Scott в другом ответе :«Проще говоря, профиль.bashrc и.bash _и т. д. должны быть тихими, иначе они будут мешать протоколу соединения sftp / scp».
В качестве альтернативы, если этот удаленный идентификатор использует zsh, поместите следующее в начало его ~/.zshrc
# If not running interactively, don't do anything and return early
[[ -o interactive ]] || exit 0
Если оболочка на вашем удаленном компьютере не использует ~/.bashrc, внесите указанные выше изменения в файл ~/.bashrc _profile или ~/.profile или аналогичный, чтобы он соответствовал вашей оболочке на этом выносной ящик
С помощью инструмента переименования Perl
для вставки-
(тире и пробела )после первых 30 символов (или байтов, я не знаю, включает ли это локали):
rename 'substr($_, 30, 0) = "- "' *.mp3
добавить -
после первого вхождения двух цифр и пробела:
rename 's/(\d\d )/$1- /' *.mp3
Обратите внимание, что есть две разные команды rename
, одна из util-linux
и одна из Perl. Они делают разные вещи, см.:
Обработка имен файлов с пробелами требует find
и xargs
. Прочтите man find xargs
и
find. -type f -print0 | xargs -0 --no-run-if-empty someprogram...
-print0
указывает find
создать список имен файлов, разделенных ASCII NUL (0x00 )байт. NUL (и "/
" )никогда не встречаются в именах файлов.
xargs -0
сообщает xargs
использовать такой разделенный нуль -список и передавать столько имен файлов, сколько система позволит someprogram
, и будет вызывать someprogram
снова и снова, пока не закончатся имена файлов..
xargs --show-limits </dev/null
покажет эти пределы.