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/" {} \;
在目前目錄而不是子目錄中查找文件:
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
排除目錄方法:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
請注意,這將僅排除今天的存檔,而您將擁有其他存檔,我建議使用第一個命令,或者在主目錄之外創建存檔目錄!