Cp
將文件從多個子目錄複製到同一個目標目錄
我有一個像這樣的目錄
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 中的所有文件複製到目標目錄
如果文件具有非唯一名稱,則
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