繁体   English   中英

从Linux中包含文件夹名称的多个文件夹复制文件

[英]Copy files from multiple folders with including folder name in Linux

我有多个子文件夹,例如:

ls ./
F1 F2 F5 F8 F12 ...

每个文件夹包含文件“ file.txt”

如何将所有file.txt文件复制到包含文件夹名称的主文件夹中?

cp ./F1/file.txt ./file_1.txt
cp ./F2/file.txt ./file_2.txt
...
declare -a dirs
i=1
for d in */
do
    dirs[i++]="${d%/}"
done
echo "There are ${#dirs[@]} dirs in the current path"

for((i=1;i<=${#dirs[@]};i++))
do
    echo "Copying file.txt from ${dirs[i]} dir..."
    cp ./${dirs[i]}/file.txt ./file_$i.txt
done

例如,将其另存为脚本文件fileTxtCopy.sh 然后将其放在父目录下,并赋予其可执行权限sudo chmod +x fileTxtCopy.sh

作为脚本运行它,您应该将所有file.txt文件复制到父目录中。

Perl一线

首先去主文件夹比:

find . | perl -a -F/ -lne 'qx(cp -r "$F[1]" T/ )'

注意
不用担心屏幕上的日志文件!
T /
是您的目标目录
主文件夹
您所有文件所在的位置。 例如,如果您的所有文件都在“ 音乐 ”文件夹中; 如此cd Music然后是Perl One Liner

file.txt文件从当前目录内的每个文件夹复制到当前目录,并将文件夹名称中包含的数字附加到复制文件的名称之后。

for i in *; do a=$(<<< "$i" grep -o "[0-9]*" -); cp "$i/file.txt" "file_$a.txt"; done

虽然不是最可靠的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM