Shell

僅複製帶有文件的目錄

  • July 15, 2015

我正在嘗試將文件及其所在的目錄複製到另一個位置。我可以找到這樣的路徑:

find ~/dim_import/* -type f ! -name xdir | cut -d '/' -f 5-10

哪個輸出

general/header.txt
scripts/test
scripts/tt

如何將這些複製到另一個位置?例如,新位置將是

new/general/header.txt
new/scripts/test
new/scripts/tt

問題是有更多的目錄是空的,我不想複製那些,只有其中有文件的目錄和文件本身。

注意:不使用 bash,使用sh.

這是一種僅使用POSIXshell 功能的方法:

find ~/dim_import/* -type f ! -name xdir -exec sh -c '
 p=${1%/*}; 
 d=${p##*/}; 
 f=${1##*/}; 
 mkdir -p new/"$d"; 
 cp "$1" new/"$d"' -- {} \;

xargs 應該可用。你可以使用:

find ~/dim_import/* -type f ! -name xdir | xargs -I {} cp {} new/{}

引用自:https://unix.stackexchange.com/questions/215194