我正在嘗試創建一個腳本來移動文件,一旦它們被放置在目錄中到子目錄中,
示例
文件就會/home/userA/directory1
被移動到/home/userA/directory1/directory2
我必須對所有users
下面的內容重複此操作,如果不存在,/home
我必須跳過該用戶。directory2
到目前為止我的腳本
#!/bin/bash
directory="/home/*/directory1"
directory2="/home/*/directory1/directory2/."
if [ $(ls -1A $directory | wc -l) -gt 0 ] ;
then
find $directory -type f -exec rsync --remove-source-files {} $directory2 \; &>/dev/null ;
fi
我對上面的腳本遇到的問題是它將所有文件移動到directory2
.
答案1
我假設在某些使用者的主頁中存在一個名為 的目錄d1
,並且在該目錄中存在一個名為 的子目錄d2
。
我想你想做類似的事情
#!/bin/bash
for i in /home/*/d1 ; do
if [ -d "$i/d2" ]; then
# echo "$i/d2"
find "$i" -maxdepth 1 -type f -exec mv {} "$i/d2" \;
fi
done
筆記:
- 如果在真實姓名中
d1
存在一些空間,您需要多做一些健身房並用 a 保護它們\
(這樣您就可以寫for i in /home/*/directory\ with\ spaces; do
)。 - 嘗試編寫
echo $directory2 ; exit
您以前的腳本,您就會明白為什麼它的行為方式與您期望的不同。更多資訊:檔案名稱擴充。