Никакой такой файл или каталог при копировании файлов в текущий каталог

Используйте -n параметр для выполнения rename в режиме пробного прогона, который очень полезен, когда Вы хотите протестировать свой шаблон:

martin@martin ~ % rename -n s/list/list.disable/g /etc/apt/sources.list.d/*.list | sed 's/renamed as/\n =>/g'
[...]
/etc/apt/sources.list.d/spotify.list 
 => /etc/apt/sources.list.disable.d/spotify.list.disable
/etc/apt/sources.list.d/steam.list 
 => /etc/apt/sources.list.disable.d/steam.list.disable
[...]

Очевидная ошибка здесь состоит в том что шаблон list соответствия sources.list.d, таким образом, Вы пытаетесь переименовать и папку и ее содержавшие файлы.

Используйте этот шаблон вместо этого:

rename -n 's/\.list$/.list.disable/' /etc/apt/sources.list.d/*.list | sed 's/renamed as/\n =>/g'
[...]
/etc/apt/sources.list.d/spotify.list 
 => /etc/apt/sources.list.d/spotify.list.disable
/etc/apt/sources.list.d/steam.list 
 => /etc/apt/sources.list.d/steam.list.disable
[...]

Различия:

  1. Заключение в кавычки . в шаблоне поиска как \. гарантирует, что точка только соответствует реальной точке и не любому символу (это - то, что неупомянутая точка в regex обычно делает).

  2. $ после того, как список означает "конец строки". Это гарантирует, что только ".list" в конце соответствий имени файла и будет заменен, не ".list", который находится где-то в другом месте в пути или имени файла.

  3. Вы не должны заключать точку в кавычки в замещающей строке; ".list.disable" поэтому работает без обратных косых черт, потому что . больше не имеет особое значение там.

  4. Также обратите внимание, что я заключил regex в кавычки в одинарных кавычках, чтобы препятствовать тому, чтобы оболочка изменила его всегда.

3
22.09.2014, 01:45
2 ответа

Нет такого каталога / об., Но это Vol (без косой), поэтому попробуйте всего

 cp vol/examples/tutorial/science.txt .
5
27.01.2020, 21:16

/vol/examples/tuTorial/science.txt - абсолютный путь. Когда путь начинается с / (Slash), он начинается из корневого каталога. Если вы хотите, чтобы путь начать с текущего каталога (относительный путь), он не должен начинаться с Slash.

joostin@ubuntu:~$ cd unixstuff
joostin@ubuntu:~/unixstuff$ cp vol/examples/tutorial/science.txt .
0
27.01.2020, 21:16

Теги

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