我正在嘗試編寫一個“看門人”腳本,該腳本將作為一項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/" {} \;
請注意,這將僅排除今天的存檔,而您將擁有其他存檔,我建議使用第一個命令,或在主目錄之外建立存檔目錄!