簡體   English   中英

在linux上的文件夾之間復制文件

[英]Copy files between folders on linux

我必須從不同的文件夾中復制許多文件。

  1. 不知道源文件夾中有多少
  2. 知道該文件夾與所包含文件的名稱相同
  3. 只需要復制包含某些文件擴展名的文件夾

源文件夾結構的示例

源文件夾具有以下結構

root
 - folder1
    - folder1.txt
 - folder2
    - folder2.csv
 - folder3
    - folder3.txt

目標文件夾結構的示例

目標文件夾應該類似於以下結構

root
 - folder1
    - folder1.txt
 - folder3
    - folder3.txt

為了完成通用副本並重新創建文件夾結構,我使用了以下腳本:

cp src/**/*.txt dest/
for file in $(ls *.txt); 
   do mkdir -p source/${file%.*}/ && mv $file dest/${file%.*}/; 
done

首先,我復制目標文件夾中的所有文件。 基於每個文件都在同名文件夾內的假設,我移動文件重新創建原始結構。 這個腳本非常有效。

現在需求已更改為支持多級文件夾結構。 例如

root
 - folder1
    - folder11
       - folder11.txt
 - folder2
    - folder2.csv
 - folder3
    - folder3.txt

如何調整腳本以保持通用?

這可能對你有用:

#!/usr/bin/env bash

shopt -s globstar

src=some/src/path
dest=some/dest/path

for f in "$src"/**/*.txt; do
    d=${f#"$src"} d=$dest/${d%/*}
    mkdir -p -- "$d" || continue
    cp -- "$f" "$d"
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM