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/" {} \;

請注意,這將僅排除今天的存檔,而您將擁有其他存檔,我建議使用第一個命令,或在主目錄之外建立存檔目錄!

相關內容