Как я могу удалить последние n символов имен файлов в определенной директории (в терминале Mac) - unix? - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь переименовать, используя "mv", потому что команда "переименовать" не работает в моем терминале Mac.

У меня есть набор файлов с именем

DTM001_ACGGT-TTAGGC.fq
DTM156_GGTTG-ACAGTG.fq

...etc

Я хочу переименовать их в

DTM001.fq
DTM156.fq

Полагаю, проще всего удалить последние 13 символов перед расширением файла?

Я попробовал эти ссылки:

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

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Самый простой способ - использовать rename - см. В конце инструкции по установке на Mac.

Итак, отвечая на ваш вопрос, вы можете посмотреть, что произойдет, если вы замените (командана самом деле s для "заменить" ) все, начиная с первого подчеркивания и до конца имени файла с .fq:

rename --dry-run  's/_.*/.fq/'   *fq

'DTM001_ACGGT-TTAGGC.fq' would be renamed to 'DTM001.fq'
'DTM156_GGTTG-ACAGTG.fq' would be renamed to 'DTM156.fq'

Если это выглядит хорошо, удалите --dry-run и запустите его снова по-настоящему.


Вы можете использовать rename на своем Mac, если вы его установите.По умолчанию Apple не поставляет менеджер пакетов с macOS.Так, многие люди используют homebrew с веб-сайта о домашнем пиве .

Если у вас есть это, вы можете просто установить rename с помощью:

brew install rename

Затем,у вас будет менеджер пакетов, и вы сможете воспользоваться всеми видами прекрасного программного обеспечения, включая новые, новейшие версии всех устаревших, старых версий ваших любимых инструментов, которые Apple поставляет:

  • PHP
  • Perl
  • ImageMagick
  • GNU sed
  • GNU awk
  • GNU find
  • GNUПараллельно
  • zeromq
  • htop
  • socat
  • sox
  • ffmpeg
  • youtube-dl
  • zenity
  • redis
  • feh
  • mosquitto
  • doxygen
  • pandoc и т. д.
0 голосов
/ 27 мая 2018

Терминал macOS - это просто интерфейс интерактивной программы, называемой оболочкой.Имя оболочки по умолчанию: bash.

То, что вы ищете, называется сценарием оболочки или сценарием bash для переименования файлов.

Ответы на вопросы, на которые вы ссылались.Чтобы повторить:

cd directory_with_the_files
for file in *.fq; do
    mv -vn "${file}" "${file%_*}.fq"
done

Вы можете ввести это все в командной строке или поместить в файл и выполнить его с помощью:

bash file_containing_the_commands

Это будет проходить через все .fq файлы в текущем каталоге, переименовывая их в то, что вы хотите.Параметр -v для mv просто означает печатать переименование, как оно происходит (полезно знать, что он что-то делает), а флаг -n означает, что случайно не перезаписывать какие-либо файлы (в случае, если вы что-то вводите неправильно)или наткнуться на повторяющиеся числа).

Вся магия происходит в ${file%_*}.fq, который гласит: «удали все после первого _ и добавь .fq back».Это называется «расширением параметров оболочки», о котором вы можете прочитать в Справочном руководстве Bash .Это несколько тупо сформулировано, но вот соответствующий бит для этого конкретного случая использования:

$ { параметр % слово }

слово расширяется, чтобы создать шаблон так же, как в расширении имени файла.Если шаблон соответствует завершающей части расширенного значения параметра , то результатом расширения является значение параметра с удалением самого короткого соответствующего шаблона (случай '%').

...