![为每个文件创建软链接](https://linux22.com/image/916934/%E4%B8%BA%E6%AF%8F%E4%B8%AA%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E8%BD%AF%E9%93%BE%E6%8E%A5.png)
我正在尝试在一个目录(我们称之为 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/')' \;