создать мягкую ссылку на каждый файл

Я пытаюсь создать в каталоге мягкую ссылку (назовем ее новой /) для каждого файла с именем (Roosvelt001_sometest.png //Roosvelt002_sometest.png // Roosvelt003_sometest.png // Roosvelt004_sometest.png // Roosvelt005_s. png // Roosvelt006_sometest.png) в другой каталог (назовем его old /), так что имя ссылки не содержит слов ('sometest') '_, а слово (' rooselvelt ') заменяется на (' Franklin ') и расширение это «.tiff» вместо «.png».

Я пытался for i in /home/usr/old/Roos* ; do ln -s $i /home/usr/new/ ; done

, но я не могу изменить файлы. У вас есть предложение? С наилучшими пожеланиями

0
задан 21 October 2019 в 22:03

2 ответа

Вот с чем я пришел найти:

find /path/old/ -name "Roosvelt*" -exec sh -c 'ln -s {} /path/new/$(basename {} | sed -e 's/Roosvelt/Franklin/' -e 's/_sometest.png/.tiff/')' \;
0
ответ дан 21 October 2019 в 21:05

Я использовал бы регулярное выражение удара для получения числа от имени файла:

for file in /path/to/old/Roosvelt*; do
    if [[ $file =~ Roosvelt([0-9]+) ]]; then
        ln "$file" /path/to/new/Franklin${BASH_REMATCH[1]}.tiff
    fi
done
3
ответ дан 22 October 2019 в 09:57

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

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