Bash スクリプトがファイルを移動できない

Bash スクリプトがファイルを移動できない

特定のディレクトリでジョブとして実行される「janitor」スクリプトを作成しようとしています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/" {} \;

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

関連情報