全文:我正在编写将所有文件从一个目录链接到另一个目录的脚本。新文件名将包含原始目录名称。我目前使用find
选项使用-execdir
。
这就是我想要的方式:
./linkPictures.sh 2017_wien 2017/10
它会在2017_wien_picture.jp
中创建指向文件2017/10
的符号链接2017_wien/picture.jpg
g。
这是我目前的剧本:
#!/bin/bash
UPLOAD="/var/www/wordpress/wp-content/uploads"
SOURCE="$UPLOAD/photo-gallery/$1/"
DEST="$UPLOAD/$2/"
find $SOURCE -type f -execdir echo {} ";"
当我跑步时
find . -execdir echo `basename {}` ";"
我收到:
./.
./DSC03278.JPG
这很奇怪。所以我从命令行运行它:
basename ./DSC03278.JPG
它按预期工作:
DSC03278.JPG
从basename
命令调用时,为什么find
不起作用?我认为脚本的其余部分很容易。
答案 0 :(得分:3)
在像
这样的命令中foo bar `basename {}` baz
,首先展开`...`
部分。 `basename {}`
为{}
,因此最终会运行
foo bar {} baz
类似地,
find . -execdir echo `basename {}` ";"
扩展为
find . -execdir echo {} ";"
首先运行find
。
尝试
find . -execdir basename {} ";"
代替。