2017-05-29 31 views
1

我的想法是在路徑$ 1中找到所有.tar文件,然後通過xargs在路徑$ dirr中從控制檯讀取與.tar文件具有相同名稱的目錄。 現在,當我編寫當前位置(./)而不是像/ home/user等路徑時,此代碼可以工作。它不是 任何想法如何使此代碼工作?使用find和xarg創建目錄

read -p "Enter destination path:" dirr 
find "$1" -maxdepth 1 -name "*.tar" -exec basename {} \; | xargs mkdir -p "$dirr" 
+0

你希望產生什麼樣的輸出?例如,如果文件'foo.tar'存在,你想要創建什麼目錄? – ghoti

+0

@ ghoti該目錄將是_foo_ –

回答

1

如果你在尋找什麼是產生位於特定目錄中的每個tar文件的目錄,那你-exec運行的殼呢?

read -p "Enter destination path:" dest 
[ -d "$dest" ] || exit 1 
find "$dest" -maxdepth 1 -name "*.tar" -exec sh -c 'mkdir -p "${0%.tar}"' {} \; 

或者交替,如果要單獨做這個殼,一個for循環可能會做:

for tarfile in "$dest"/*.tar; do 
    mkdir -p "${tarfile%.tar}" 
done 

注意,如果在目標目錄中不存在的tar文件,這可能產生有趣的結果。

+0

謝謝,它的工作很好 –

+0

很高興我可以幫助!如果您覺得這個問題足以解決您的問題,請隨時點擊答案左側的綠色複選標記。 :) – ghoti