Bash

Bash 腳本無法移動文件

  • November 2, 2015

我正在嘗試編寫一個“管理員”腳本,它將作為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/" {} \;

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

引用自:https://unix.stackexchange.com/questions/240275