2016-11-30 5 views
0

Мне нужно переименовать несколько файлов, не зная имя файла (имя_базы/имя строки) файла.пакетное переименование нескольких файлов одного и того же расширения

я попытался с:

for i in $(ls /Users/Destiny/Desktop/Index/*.ebwt); 
do 
    mv -v "$i" "${i/hsa/hsa.genome.V86C}"; ## works when i know the string to replace 
done 

но что, если не знаете имя файла (имя строки)?

Перед переименованием: hsa.1.ebwt hsa.2.ebwt hsa.3.ebwt hsa.4.ebwt

После переименования: hsa.genome.V86C.1.ebwt hsa.genome .V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.V86C.4.ebwt

+0

, затем переименуйте его в random number: D – fedorqui

+0

Что вы переименовываете? То же самое, но с другим суффиксом? – 123

+0

Я спрашиваю об этом, потому что я просто знаю расширение файла, и мне нужно переименовать его с помощью soemthing, чтобы использовать его в разных сценариях bash. – unique379

ответ

0

Вы можете что-то сделать с поиском в вашем каталоге. И если все они имеют такое же расширение, то это может быть что-то, как показано ниже с ходом, что вы в настоящее время:

find /Users/Destiny/Desktop/Index -type f -name "*.ebwt" | while read file; 
do 
mv -v "$file" "${file/hsa/hsa.genome.V86C}"; 
done 

Это переименовать его в текущей директории, и если вы хотите, чтобы переместить его в другой каталог позже вниз по линии, вы могли бы окружить второй аргумент, как это с базовым именем, чтобы сделать перемещение легче:

"/SomeDirectory/$(basename ${file/hsa/hsa.genome.V86C})" 

вы можете также поместить -maxdepth 1 после каталога вы хотите найти, если вы не хотите, чтобы быть рекурсивными в найдите

Смежные вопросы