самый простой способ удалить обратную косую черту из имени файла

У меня есть список файлов, похожий на следующий, и мне нужно удалить обратный слеш:

\jskadn.txt
\jsandkjasn5.txt

Я попробовал выполнить следующую команду, но она не работает :

rename " \\*.txt" "*.txt"
1
задан 1 July 2021 в 12:53

1 ответ

  • С помощью переименования файлов на основе Perl:

    $ rename --version
    /usr/bin/rename с использованием File::Rename версии 1.10
    

    затем используя sed-стиль регулярного выражения s/pattern/replacement/:

    $ rename -vn 's/\\\//' \\\*.txt
    rename(\jsandkjasn5.txt, jsandkjasn5.txt)
    rename(\jskadn.txt, jskadn.txt)
    
  • С помощью util-linux rename (который принимает простые шаблоны замены аргументов):

    $ rename.ul --version
    rename.ul из util-linux 2.34
    

    then:

    $ rename.ul -vn '\' '' \\\*.txt
    `\jsandkjasn5.txt' -> `jsandkjasn5.txt'
    `\jskadn.txt' -> `jskadn.txt'
    

    (вы можете использовать \\\ вместо '\', если хотите). Уберите переключатель -n (no-op), когда убедитесь, что они поступают правильно.

  • Для полноты, используя mmv:

    $ mmv -n '\\\*' '#1'
    \jsandkjasn5.txt -> jsandkjasn5.txt
    \jskadn.txt -> jskadn.txt
    
  • Или простой цикл оболочки:

    $ for f in \\\\*.txt; do echo mv "$f" "${f#?}"; done
    mv \jsandkjasn5.txt jsandkjasn5.txt
    mv \jskadn.txt jskadn.txt
    

    (удалите echo в этом случае).

3
ответ дан 28 July 2021 в 11:26

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

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