Filenames

將多個文件夾中的多個文件複製到一個

  • October 4, 2019

如何將多個文件夾中的多個文件複製到一個文件夾中,並根據複製的目錄更改它們的名稱?

初始目錄層次結構:

folder1/
   file1.gz
   filexyz.gz

folder2/
   file1.gz
   filexyz.gz

folder3/
   file1.gz
   filexyz.gz

結果:

folder1_file1.gz
folder2_file1.gz
folder3_file1.gz
folder1_filexyz.gz
folder2_filexyz.gz
folder3_filexyz.gz

使用一個簡單的 shell 循環,假設文件應該被複製到 value 給定的目錄$destdir

for pathname in */*.gz; do
   cp -i -- "$pathname" "$destdir/$( dirname -- "$pathname" )_$( basename -- "$pathname" )"
done

像這樣的東西?

#!/bin/bash -ex
DESTDIR="PATH/TO/FINAL/DESTINATION/DIRECTORY"
for DIRS in /PATH/TO/YOUR/DIRECTORIES/*/;
do
   for FLES in $DIRS*.gz;
   do
       cp $FLES $DESTDIR/$(echo $(basename $DIRS)"_"$(basename $FLES))
   done
done

編輯:我懶得在程式碼中添加任何解釋,因為 OP 沒有費心表明他們已經嘗試自己解決問題(如果有的話)。但是應該提供同樣的幫助,因此我的文章。

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