整个故事:我正在编写一个脚本,将所有文件从一个目录链接到另一个目录。新文件名将包含原始目录名。我用find
此时此刻与-execdir
选项。
这就是我想使用它的方式:
./linkPictures.sh 2017_wien 2017/10
它将创建一个符号链接2017_wien_picture.jpg
in 2017/10
指向一个文件2017_wien/picture.jpg
.
这是我当前的脚本:
#!/bin/bash
UPLOAD="/var/www/wordpress/wp-content/uploads"
SOURCE="$UPLOAD/photo-gallery/$1/"
DEST="$UPLOAD/$2/"
find $SOURCE -type f -execdir echo ln -s {} $DEST/"$1"_{} ";"
它打印:
ln -s ./DSC03278.JPG /var/www/wordpress/wp-content/uploads/2017/10/pokus_./DSC03278.JPG
这就是我要的:
ln -s ./DSC03278.JPG /var/www/wordpress/wp-content/uploads/2017/10/pokus_DSC03278.JPG
如何实施?我不知道如何合并basename
进入剥离。/。
To run basename
on {}
你需要通过执行命令sh
:
find "$SOURCE" -type f -execdir sh -c "echo ln -s '{}' \"$DEST/${1}_\$(basename \"{}\")\"" ";"
这不会赢得任何速度竞赛(因为sh
对于每个文件),但它会起作用。
所有的引用可能看起来有点疯狂,但有必要确保可能包含空格的文件的安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)