1
整個故事:我正在編寫將所有文件從一個目錄鏈接到另一個目錄的腳本。新文件名將包含一個原始目錄名稱。此時我使用find
與-execdir
選項。Bash:在find中運行時的基名稱不一致
這是我要如何使用它:
./linkPictures.sh 2017_wien 2017/10
它將創建2017/10
一個符號鏈接2017_wien_picture.jp
克指向文件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
不起作用?我認爲腳本的其餘部分很容易。
您仍然希望'-type f'來防止拾取'.'文件。 –
謝謝。我明白。儘管如此,它使得其餘的更難。我計劃做:找到。 -type d -execdir ln -s {} $ dir/$ dir_'basename {}'。發現是否可以實現? –
我接受了這個答案並創建了一個新問題:https://stackoverflow.com/questions/46630069/strip-from-filename-in-find-execdir –