ワイルドカードを使用してファイルを移動しますか?

ワイルドカードを使用してファイルを移動しますか?

ああ、私はいくつかのページと質問を読んだが、理解できないか完全に理解できない...

jdir0="$@"  # /home/tor/subbackup/teest2/jjj
mv  "$jdir0/subs/*.srt" /home/tor/subbackup/

mv: '/home/tor/subbackup/teest2/jjj/*.srt' を計算できません。そのファイルやディレクトリはありません。

まあ、ええ、はい、そこにtest2.srtがあります。

私は多くの異なるソリューションを含むいくつかのページを見てきました。

mv /home/tor/subbackup/teest2/jjj/subs/test2.srt /home/tor/subbackup/

これは端末でうまく動作します..

(最初の移動コマンド)しかし、スクリプトで動作させることはできません。私が何を間違っているのでしょうか?

ベストアンサー1

jdir0="$@"

"$@"次に展開みんなスクリプトの位置引数/引数。単一の変数に割り当てると、Bash は変数をスペースで連結します。あなたはただ$1ここにいたいかもしれません。

mv "$jdir0/subs/*.srt"

変数拡張はトークン化を防ぎ、変数にglobのように見える項目が含まれている場合はワイルドカードを防ぐので、実際に引用する必要があります。しかし、ここではおそらくハードコードされたグロブが機能したいと思います。いいえ引用してください。

したがって、引用符の外側にアスタリスクを残してください。

mv "$jdir0"/subs/*.srt

または例えば

mv "$jdir0/subs/"*.srt

どちらも同じように動作するので、より良いと思うバリエーションを使用してください。

おすすめ記事