>整个故事:我正在编写将所有文件从一个目录链接到另一个目录的脚本。新文件名将包含原始目录名称。我此刻使用find
-execdir
选项。
这就是我想使用它的方式:
./linkPictures.sh 2017_wien 2017/10
它将创建一个符号链接 2017_wien_picture.jp
g 在 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 {} ";"
当我跑步时
find . -execdir echo `basename {}` ";"
我收到:
./.
./DSC03278.JPG
这很奇怪。所以我从命令行运行它:
basename ./DSC03278.JPG
它按预期工作:
DSC03278.JPG
为什么从find
命令调用时basename
不起作用?我认为脚本的其余部分会很容易。
在类似命令中
foo bar `basename {}` baz
,首先展开`...`
部分。 `basename {}`
是{}
,所以这最终运行
foo bar {} baz
同样地
find . -execdir echo `basename {}` ";"
扩展到
find . -execdir echo {} ";"
首先,然后才运行find
.
尝试
find . -execdir basename {} ";"
相反。