將多個檔案從多個目錄移動到來源相對目標

將多個檔案從多個目錄移動到來源相對目標

具有以下文件層次結構:

dir
├── dirA
│   └── snapshot
│       └── subdir1
│           └── file1
└── dirB
    └── snapshot
        └── subdir2
            └── file2

我想在單一命令中從每個快照/子目錄目錄移動檔案到快照的父目錄。那將是:

dir
├── dirA
│   └── file1
│   └── snapshot
│       └── subdir1
└── dirB
    └── file2
    └── snapshot
        └── subdir2

我已經嘗試過mv dir/*/snapshot/*/* ../../,但由於目標部分../../是相對於工作目錄的,所以它顯然不起作用。

是否可以使用 bash 命令(因為我從未編寫過一行 bash 腳本)?

答案1

基於@Don_Christ的敏銳觀察,這個答案被編輯,從而保存了一個子shell:

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done

相關內容