[英]Copy files between folders on linux
我必須從不同的文件夾中復制許多文件。
源文件夾結構的示例
源文件夾具有以下結構
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.