Мне нравится Perl так:
perl -nlE '$old=$_; s/image//; qx(mv $old $_)'
Можно также использовать тот же шаблон для других задач как копирование файлов к другому каталогу:
perl -nlE '$old=$_; s(image)(/path/to/new/dir/); qx(mv $old $_)'
Несколько наклонных черт позволяются и эквивалентны единственной наклонной черте. От Единственной спецификации Unix (версия 4) основывайте определения §3.271 путь: “Несколько последовательных наклонных черт считаются тем же как одной наклонной чертой”.
Существует одно исключение: Если путь начинается с двух последовательных символов, первый компонент после начальных символов может быть интерпретирован определенным реализацией способом. (касательно: основные определения §4.13 разрешение пути). Сам Linux не делает этого, хотя некоторые приложения могли бы, и другая система выхода Unix делает (например, Cygwin).
Запаздывание /
в конце пути вынуждает путь обратиться к каталогу. В (POSIX 1003.1-2001 (Единственный Unix v4) основывают определения §4.11 разрешение пути, запаздывание /
эквивалентно запаздыванию /.
. POSIX 1003.1-2008 (Единственный Unix v4) основные определения §4.13 удаляет требование для создания этого эквивалентным /.
, для преодоления несуществующих каталогов (например. mkdir foo/
требуется, чтобы работать, тогда как mkdir foo/.
не был бы — видеть объяснение для изменения).
Для программ, которые действуют на запись каталога, если foo
символьная ссылка на каталог, затем передавая foo/
путь состоит в том, чтобы заставить программу действовать на каталог вместо символьной ссылки.
¹ Примечание, что это запрашивает разрешение пути только, т.е. при доступе к файлам. Манипуляции именем файла могут работать по-другому. Например, basename
и dirname
проигнорируйте запаздывание наклонных черт.
ОС, кажется, не заботится об этом также, только что испытав программу C с прямым syscall для открытия//в пути.
Можно использовать библиотечную функцию Python os.path.normpath для нормализации его, хотя, который сохраняет Вас имеющий необходимость просканировать через строку, ища отдельно оплачиваемые предметы. Другие языки имеют подобные функции.
http://docs.python.org/library/os.path.html#os.path.normpath
Во всех системах Unix, что я видел, что это совпадает с синглом /
, но стандарт Unix указывает это
Путь, который начинается с двух последовательных наклонных черт, может быть интерпретирован определенным реализацией способом, хотя больше чем две ведущих наклонных черты нужно рассматривать как единственную наклонную черту.
таким образом, это может быть обработано особенно, в зависимости от Вашей системы. (Некоторые более старые версии Unix использовали двойное продвижение /
для доступа удаленной файловой системы, и могут все еще быть некоторые, которые делают.)
//remote/...
к доступу удаленной файловой системы, вероятно, для непротиворечивости с Windows \\remote\...
.
– ephemient
20.01.2011, 02:33
//remote/...
то же как путь UNC \\remote\...
формат.
– Stephen P
20.01.2011, 02:39
//
специальным способом, которым они могут протестировать false
для того, чтобы быть абсолютным, соответствуя спецификации Unix/POSIX.
–
20.01.2011, 02:52
Использовать os.path.join
в Python и Вы не получите несколько наклонных черт. Создание имен файлов самостоятельно путем конкатенации строк считают плохим стилем Python.
/
очень хорошо.
– Falmarri
20.09.2010, 20:44
Нет никакого различия.
Несколько наклонных черт проигнорированы (без эффекта), например:
ls -al //usr///////bin/sed
Конечно, можно нормализовать путь с возможным несколько / (наклонные черты) в нем путем передачи его через tr -s
NORMALIZED=$(echo "$UNHYGIENIC" | tr -s / /)
... и затем используйте $NORMALIZED
Однако это должно быть необходимо. Что касается того, поскольку я знаю любого правильно, что ядро UNIX должно проигнорировать параллельные разделители пути---или концептуально обработка их как..././
...
/.
был удален после более позднего процесса обсуждения, поскольку это было неоднозначно. Так или иначе +1 как находящий этот вид информации, хорошо полученной в итоге, твердо. – hakre 26.07.2014, 15:03