为每个文件创建软链接

为每个文件创建软链接

我正在尝试在一个目录(我们称之为 new/ )中创建一个软链接,指向每个名为(Roosvelt001_sometest.png //Roosvelt002_sometest.png // Roosvelt003_sometest.png // Roosvelt004_sometest.png // Roosvelt005_sometest.png // Roosvelt006_sometest.png)的文件,并指向另一个目录(我们称之为 old/ ),这样链接名称不包含单词 ('sometest')'_and 单词 ('rooselvelt') 被 ('Franklin') 替换,扩展名是 '.tiff' 而不是 '.png'。

我试过for i in /home/usr/old/Roos* ; do ln -s $i /home/usr/new/ ; done

但我无法更改文件。你有什么建议吗?谨致问候

答案1

我将使用 bash 正则表达式从文件名中捕获数字:

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

答案2

这是我带来的find

find /path/old/ -name "Roosvelt*" -exec sh -c 'ln -s {} /path/new/$(basename {} | sed -e 's/Roosvelt/Franklin/' -e 's/_sometest.png/.tiff/')' \;

相关内容