Bashスクリプトはファイルを移動できません

Bashスクリプトはファイルを移動できません

cron特定のディレクトリでジョブとして実行される「ゲートキーパー」スクリプトを作成しようとしています。名前に作成日を含むアーカイブフォルダを作成し、特定の種類のすべてのファイルを見つけてこの新しいフォルダに移動する必要があります。

これは私のテストコードです。

#!/bin/bash

today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;

フォルダを正しく作成しましたが、見つかったファイルをフォルダに移動することはできません。ちょっとしたテストでこれを行いましたが、スクリプトとファイルの両方が同じユーザーによって作成されました。最初に追加すると、sudoファイルを移動しようとしますが、現在のディレクトリからのみファイルを削除し、新しく作成されたディレクトリには入れません。

.zipファイルを移動したくありません。単なる例です。

chmod 777ファイルとフォルダの両方を試してみました。同じことが起こります。

私はUbuntu 14.04 LTSを実行しています。

もっと良い方法があれば教えてください。

正しい方向についてのアドバイスをいただきありがとうございます。

編集する

今大丈夫です。

私はfind声明を次のように更新しました。

find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;

ベストアンサー1

サブディレクトリの代わりに現在のディレクトリでファイルを探します。

find . -maxdepth 1  -type f -name '*.zip'  -exec mv -t "$target/" {} \;

ディレクトリを除外する方法:

find . -type f -not -path "$target/*"  -name '*.zip'  -exec mv -t "$target/" {} \;

これは今日のアーカイブだけが除外されることに注意してください。他のアーカイブもありますが、最初のコマンドを使用するか、ホームディレクトリの外部にアーカイブディレクトリを作成することをお勧めします。

おすすめ記事