У меня много неработающих символов c ссылок, которые указывают на файлы, которых больше не существует в этом месте, я могу найти их все с помощью этой единственной строки:
find . -type l | while read f; do if [ ! -e "$f" ]; then ls -l "$f"; fi; done
Что дает мне кое-что вот так:
./17_50.paired.right.fastq.gz -> ../../../../../../../.git/annex/objects/24/P0/SHA256E-s4214107462--c36267de6b6d438d1ea9c0f262be5a873aaffdf8845a42377e159db6a71b404d.gz/SHA256E-s4214107462--c36267de6b6d438d1ea9c0f262be5a873aaffdf8845a42377e159db6a71b404d.gz
Теперь у меня есть резервная копия связанных файлов в другом месте, и я хотел бы использовать результат первой строки, чтобы найти файл SHA256E-s4214107462--c36267de6b6d438d1ea9c0f262be5a873aaffdf8845a42377e159db6a71b404d.gz
в резервной копии и заменить исходная ссылка на что-то вроде этого
./17_50.paired.right.fastq.gz -> /path/to/backup/SHA256E-s4214107462--c36267de6b6d438d1ea9c0f262be5a873aaffdf8845a42377e159db6a71b404d.gz
Как я могу это сделать? Спасибо.