Поскольку точка входа find
— это .
, фактически ваша pwd
. Если точка входа будет, например. /
тогда эта часть пути будет добавлена к вашему pwd
вот так:
$ find / -type f -name "autosys*"
/path/from/root/to/$HOME/to/pwd/autosys1.txt
mv
либо берет один файл и перемещает или переименовывает его, либо берет несколько файлов или каталогов и перемещает их в каталог. Вы не можете переименовать несколько файлов с помощью mv
.
Вместо этого:
for name in *.*.fasta.gz; do
newname=${name%.fasta.gz} # remove filename suffix
newname=${newname//./_}.fasta.gz # replace dots with underscores and add suffix
mv -i -- "$name" "$newname"
done
Это приведет к перебору всех ваших сжатых файлов fasta в текущем каталоге, содержащих хотя бы одну точку в другом месте имени, кроме суффикса имени файла. Это удалит известный суффикс имени файла (, в котором точки не должны заменяться символами подчеркивания ), а затем заменит все точки символами подчеркивания в оставшемся бите и re -прикрепит суффикс.
Окончательная замена будет работать в оболочке bash
, но, возможно, не будет работать в оболочке /bin/sh
.
mv -i
используется для переименования файла (запросит подтверждение, если новое имя уже существует ). Двойное тире(--
)используется только в том случае, если какое-либо из имен начинается с тире (, они потенциально могут быть восприняты как наборы опций для mv
, а двойное тире предотвращает это ).
Если у вас perl-rename
установлен (с именем rename
в Debian, Ubuntu и других производных от Debian -системах ), вы можете:
rename -n 's/\./_/g; s/_fastq_gz/.fastq.gz/' *fastq.gz
Это сначала заменит все .
на _
, а затем заменит окончательный _fastq_gz
на .fastq.gz
.
-n
заставляет его печатать только изменения, которые он должен был бы сделать, без фактического переименования файлов. Как только вы убедитесь, что это делает то, что вы хотите, удалите -n
, чтобы фактически переименовать их:
rename 's/\./_/g; s/_fastq_gz/.fastq.gz/' *fastq.gz
*
расширяется оболочкой перед запуском команды. Он соответствует существующим файлам. mv
не имеет возможности сопоставления с образцом.
mmv
Эта команда работает примерно так, как вы пытаетесь это сделать. Он не такой мощный, как rename
, но проще.
напр.mmv '*.assembled.*.fastq.gz' '#1_assembled_#2fastq.gz'