假设我有一个文件夹结构,如:
库\
...
我需要一个命令,以便我可以输入Libraries文件夹并在Output文件夹中指定一个Output文件夹:
输出\
基本上它:
我使用的是rsync,但它没有做第二步,所以我想我需要一些快速而肮脏的修改?
非常感谢!
答案 0 :(得分:1)
你可以说:
cd /path/to/Libraries
while read -r file; do
odir=$(cut -d'/' -f2 <<< ${file});
fname=$(basename ${file});
cp "$file" "/path/to/Output/${odir}/${fname}";
done < <(find . -type f -name "*.h")
这会根据所需的目录结构将所有*.h
文件复制到Output
文件夹。
答案 1 :(得分:1)
基于devnull的修改后的答案:
idir=$1
odir=$2
while read -r f; do
subdir=${f#$idir}
subdir=${subdir%%/*}
mkdir -p $odir/$subdir
cp -a $f $odir/$subdir
done < <(find $idir -type f -name "*.h")
调用类似
的内容./thisscript.sh Libraries Output
应能够使用绝对或相对目录,恕我直言;但是如果.h文件在Libraries下面,则不会处理(必须至少有一个子目录级别。)。