我有一个像这样的目录
Main Directory
SubDirectory
SubsubDirectory1
xx.jpg
xx,jpg
SubsubDirectory2
xx.jpg
xx,jpg
SubDirectory
SubsubDirectory1
xx.jpg
xx,jpg
SubsubDirectory2
xx.jpg
xx,jpg
SubDirectory
SubsubDirectory1
xx.jpg
xx,jpg
SubsubDirectory2
xx.jpg
xx,jpg
我想将所有 SubsubDirectory1 中的所有文件复制到目标目录
答案1
如果文件的名称不唯一,则
cp "Main Directory"/*/Subsubdirectory1/* destdir
会覆盖目的地的一些文件。如果有的话这也会失败数千匹配的路径名。
为了解决这个问题,使用 GNU cp
:
for pathname in "Main Directory"/*/Subsubdirectory1/*; do
cp --backup=numbered "$pathname" destdir
done
这将为文件创建编号备份,否则这些备份将被覆盖。
同样的事情,但使用非 GNU cp
:
for pathname in "Main Directory"/*/Subsubdirectory1/*; do
# create first stab at destination pathname
dest="destdir/${pathname##*/}"
i=0
while [ -e "$dest" ]; do
# destination name exists, remove backup number from end of
# pathname and replace with next one in the sequence
i=$(( i + 1 ))
dest="${dest%.~*~}.~$i~"
done
cp "$pathname" "$dest"
done
答案2
尝试这个:
cp mainDir/*/SubsubDirectory1/* <destination_path>
注意:文件名必须不同。