2016-08-04 56 views
0

我有一個目錄結構像這樣 /dir01/dir02 /文件將文件複製到一個名爲目錄在bash

我想在dir02的第一個文件複製到一個單獨的驅動器,並與同名目錄dir01

我寫了下面的腳本

while [ "${*}" != "" ] ; do 

INPUT="${1}" 
FOLDER="${INPUT}"/*DPX 
TARGET_FOLDER="/Users/user/Desktop/folder"/$(basename "${INPUT}") 

for file in "${FOLDER}"; do 
    echo cp "$file" "${TARGET_FOLDER}" 
    break 1 
done 
done 

這裏輸入dir01,文件夾dir02和TARGET_FOLDER是因爲dir02我想複製到該文件同名的新目錄。

當我運行該腳本時,它會在INPUT路徑中查找名爲* DPX的文件夾,該文件夾不存在。 INPUT目錄中有許多名爲* DPX的文件夾,我希望它從所有文件夾中取出第一個文件。

+0

檢查當前目錄或將dir01作爲絕對路徑。在某處插入'ls $ PWD/$ INPUT'來檢查你是否在你認爲你的目錄中。另外,一些'shift'必須在這裏丟失,否則你將會有一個無限循環。 –

+0

謝謝! @ Jean-FrançoisFabre – Bleakley

回答

1

嘗試更換您的for有:

for file in "$INPUT"/*DPX/* 

注:

  • 你的版本是尋找一個叫*DPX因爲${FOLDER}是在for行引用的文件。
  • for f in "$dir"將執行for循環一次,其中f=$dir。要查找$dir下的文件,您需要另一個/*
  • 此外,你想要一個shift前最後done
+0

謝謝!這工作! – Bleakley

+0

我很高興能幫上忙。你能否接受答案? –

相關問題