Find
以修改後的名稱複製文件
我必須找到以數字結尾的目錄中的所有文件(這部分沒問題)並以修改後的名稱複製它們(我不知道如何做這部分)。通常:
find $folder -maxdepth 1 -type f -name '*-[0-9]\.jpg'
將所有這些文件複製到同一目錄,並命名它們
$originalName-mini.jpg
find
+**bash
**解決方案:find $folder -maxdepth 1 -type f -name "*-[0-9].jpg" -exec \ bash -c 'cp "$1" "${1:0:-4}-mini.jpg"' _ {} \;
您實際上並不需要
find
這裡,因為您只是在單個目錄中查找,只需一個 shell 循環就可以完成這項工作。您也不需要在文件名通配模式中轉義點。for pathname in "$folder"/*-[0-9].jpg; do [ -f "$pathname" ] && cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg" done
參數替換從 的值的末尾
${variable%pattern}
刪除。pattern``variable
測試
-f
絕對確保我們正在處理一個正常文件(或一個符號連結)而不是一個錯誤命名的目錄。用來
find
做同樣的事情:find "$folder" -maxdepth 1 -type f -name '*-[0-9].jpg' -exec sh -c ' for pathname do cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg" done' sh {} +