Я пытаюсь создать в каталоге мягкую ссылку (назовем ее новой /) для каждого файла с именем (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
, но я не могу изменить файлы. У вас есть предложение? С наилучшими пожеланиями
Вот с чем я пришел найти
:
find /path/old/ -name "Roosvelt*" -exec sh -c 'ln -s {} /path/new/$(basename {} | sed -e 's/Roosvelt/Franklin/' -e 's/_sometest.png/.tiff/')' \;
Я использовал бы регулярное выражение удара для получения числа от имени файла:
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