パスに複数のワイルドカードを使用して、ディレクトリ内のすべてのファイルに対してコマンドを実行します。

パスに複数のワイルドカードを使用して、ディレクトリ内のすべてのファイルに対してコマンドを実行します。

forループを実行してディレクトリ内のすべてのファイルをコピーし、バックアップディレクトリに入れようとします。異なる名前のサブディレクトリが複数あるため、複数のワイルドカードを使用する必要があります。これは私のスクリプトです。

#!/bin/bash

DIR="/home/users/data/*"

for file in $DIR
do
        cp "$file"/**/**/*.txt* "$DIR"/backup/"$file"
done

スクリプトを実行するとサブディレクトリに入ることができず、ディレクトリが次のようになると思います。

/directory1/**/**/*.txt*

どんな提案でも大変感謝します。

ベストアンサー1

/home/users/dataコピーのみを希望する場合/home/users/data/backup:

rsync -ai --exclude=/backup/ /home/users/data/ /home/users/data/backup

また、backupコマンドを再実行すると、ディレクトリ自体がコピーされないように除外されます。ソースディレクトリ(および除外パターンのディレクトリ)には、後にスラッシュが必要です。

おすすめ記事