1
全体の話:あるディレクトリから別のディレクトリにすべてのファイルをリンクするスクリプトを書いています。新しいファイル名には元のディレクトリ名が含まれます。私はこの時点でfind
を使用し、-execdir
オプションを使用します。Bash:findで実行したときのbasenameの不一致
./linkPictures.sh 2017_wien 2017/10
そして、それはファイル2017_wien/picture.jpg
を指す2017/10
にシンボリックリンク2017_wien_picture.jp
グラムを作成します。
これは私がそれを使用する方法です。
これは私の現在のスクリプトです:奇妙である
./.
./DSC03278.JPG
:私は私が受け取る
find . -execdir echo `basename {}` ";"
を実行すると
#!/bin/bash
UPLOAD="/var/www/wordpress/wp-content/uploads"
SOURCE="$UPLOAD/photo-gallery/$1/"
DEST="$UPLOAD/$2/"
find $SOURCE -type f -execdir echo {} ";"
。だから私は、コマンドラインからそれを実行しました:
basename ./DSC03278.JPG
と期待どおりに動作します:
DSC03278.JPG
find
コマンドから呼び出されたときbasename
が動作しないのはなぜ?スクリプトの残りの部分は簡単だと思います。
foo bar `basename {}` baz
ようなコマンドで
あなたは '-type f'が' .'ファイルを受け取らないようにしたいでしょう。 –
ありがとうございます。わかりました。それにもかかわらず、それは残りをより困難にします。私はやりたいと思った:見つける。 -t d -execdir ln -s {} $ dir/$ dir_'basename {} 'を実行します。それは見つけると達成可能ですか? –
私はこの回答を受け入れ、新しい質問を作成しました:https://stackoverflow.com/questions/46630069/strip-from-filename-in-find-execdir –