Заполнение клавишей Tab. Как плохо это высосало бы, если бы необходимо было вывести все символы каждого пути?
Много инструментов GNU такой как cp
, mv
и tar
поддержка, создающая файлы резервных копий, когда цель существует. Таким образом, при копировании foo
кому: bar
, если уже существует названный файл bar
, существующее bar
будет переименован, и после копии bar
будет содержать содержание foo
. По умолчанию, bar
переименован к bar~
, но поведение может быть изменено:
# If a file foo exists in the target, then…
cp -r --backup source target # rename foo → foo~
cp -r --backup=t source target # rename foo → foo.~1~ (or foo.~2~, etc)
Существуют другие варианты, такие как создание пронумерованных резервных копий только, когда каждый уже существует. Дополнительную информацию см. в coreutils руководстве.
Я попробовал
apropos copy | grep "(1)"
найти возможных кандидатов и mcopy обнаружилось.
man mcopy
показывает многообещающий вариант -D clash-option
разве это не прохладно? Но не настолько прохладное - это не описано. Но существуют некоторые подсказки к mtools.dvi, который я искал в своей системе, без успеха, и через Google, без успеха, но затем, с Google, я искал непосредственно mcopy clash-option
и найденный этим сайтом.
Я сделал короткий тест
mcopy -D A f* a
к тестам для автопереименовывают и targetdir a
- вместо того, чтобы автопереименовать его спросил меня, чтобы каждый файл проигнорировал или переопределил, что глупый s....
Моя версия mtools-4.0.10
и страница справки с 1996 - 15 лет. Должны мы действительно потеряли некоторые функции, между тем?
Я разделил бы работу на два шага:
find
, и выполните тот сценарий для каждого файла, который Вы хотите скопировать. Мы поможем в этом подходе?:)
Вот сценарий, для автопереименовывания файлов:
#!/bin/bash
name=$1
target=$2
autorename () {
name=$1
target=$2
no=$3
test -e ${target}/${name}.$no && autorename ${name} ${target} $((no+1)) || cp ${name} ${target}/${name}.$no
}
test -e ${target}/${name} && autorename ${name} ${target} 0 || cp ${name} ${target}
и это - мой тестовый вызов:
find -maxdepth 1 -name "fo*" -type f -exec ./autorename.sh {} /mnt/hidden/test/a ";"
Примечание:-maxdepth, - имя и - вводят, где используется ограничить количество затронутых файлов существенно. Я не протестировал сценарий на более глубокие файловые структуры, ни на пробелы в именах файлов и другом, броских символах как перевод строки, pagefeed и так далее.
Я использовал.1, потому что это не создает неприятности в большинстве команд, в то время как (и a) часто нуждаются в маскировании.
Не с GNU cp
, по крайней мере.
Вам настоятельно рекомендуют не иметь названия дубликата файла (игнорирующий регистр), они просто вызовут Вас мир боли. Найдите список такого использования дубликатов
find . | tr A-Z a-z | sort | uniq -d
Затем вручную переименуйте один из файлов для каждой строки, если произведено. Постарайтесь не создавать дубликаты в будущем.
brew install coreutils
и затем используйте командуgcp
вместо этого. – Weston Ganger 21.03.2016, 21:50