Команда Sed записывает выражение во внешний модуль ifmodule

mv "$k" "${f%.*}.csv"

Поскольку переменная fне определена, вся подстановка не представляет собой пустую строку, и команда становится mv "$k" ".csv".

Все файлы, кроме одного, в каждом каталоге потеряны. Последний теперь называется .csv. Вы, вероятно, этого не заметили, потому что точка в начале делает файл скрытым; используйте ls -a, чтобы увидеть такие файлы. Файловые менеджеры с графическим интерфейсом обычно также имеют возможность отображать скрытые файлы.

1
04.11.2018, 07:29
1 ответ

Ваша команда s///имеет префикс /, из-за чего sedее неправильно понимают. Также похоже, что завершающая одинарная кавычка не является обычной одинарной кавычкой(вместо '), но это может быть проблемой именно в этом вопросе.

Чтобы изменить все экземпляры строки index.phpна index.tempв каком-либо файле dir.conf, используйте

sed -i 's/index\.php/index.temp/g' dir.conf

Точка в шаблоне должна быть экранирована, так как она используется в регулярных выражениях. (вы также можете использовать [.]вместо\.). Также обратите внимание, что здесь используется -iдля «редактирования в -месте», что обычно не переносимо .

Чтобы убедиться, что вы не меняете myindex.phpна myindex.tempили index.php3на index.temp3, используйте \<и\>(или \bвместо обоих )для соответствия границы слов:

sed -i 's/\<index\.php\>/index.temp/g' dir.conf
0
16.12.2020, 07:03

Теги

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