Linux腳本從多個目錄移動文件

Linux腳本從多個目錄移動文件

我正在嘗試創建一個腳本來移動文件,一旦它們被放置在目錄中到子目錄中,
示例
文件就會/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您以前的腳本,您就會明白為什麼它的行為方式與您期望的不同。更多資訊:檔案名稱擴充

相關內容