Как я удаляю все одинарные кавычки во всех файлах рекурсивно с помощью, 'переименовывают'?

В заголовке говорится все это, и да я знаю, что существует много подобных вопросов, но самое близкое, которое я мог найти, удаляло "и нет '. Что я попробовал, до сих пор:

find -name "*'*" -type f | rename 's/\'//g'

или rename 's/[']//g' и некоторые другие изменения. Я нахожу все файлы, но когда я передаю его по каналу к rename, Я просто добираюсь >для подсказки и имеют к Ctrl+C для возврата. Я недавно изменил много файлов с этим, и это работало как очарование над любым специальным символом, кроме одинарных кавычек.

3
задан 23 March 2017 в 10:21

2 ответа

Можно использовать двойные кавычки:

rename -n "s/'//g"

удаляют -n после тестирования для переименования файлов для реального

Использование -exec хотя...

find -name "*'*" -type f -exec rename -n "s/'//g" '{}' \;

, Если список не является слишком длинным, сделайте его быстрее...

find -name "*'*" -type f -exec rename -n "s/'//g" '{}' +
7
ответ дан 1 December 2019 в 13:23

Это работает с bash в моей системе (OpenSUSE Leap):

$ rename "'" '' **

3 аргумента для rename: "'", '' и ** (globstar), предлагая заменить кавычки пустой строкой и сделать это рекурсивно.

Обратите внимание, что ** (globstar) в моей системе включен по умолчанию. Я не знаю, как его отключить.

0
ответ дан 14 September 2020 в 01:56

Другие вопросы по тегам:

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