Bash
從包含重複文件的文件夾中移動唯一文件
簡而言之,我在一個文件夾中有重複的文件,格式如下:
file.ext file(1).ext file(2).ext file(3).ext otherfile.ext otherfile(1).ext otherfile(2).ext ...
我只想移動
file.ext
到otherfile.ext
另一個文件夾。有可能做到bash
嗎?我認為這可能
awk
會有所幫助?
在
bash:
shopt -s extglob # activates extended pattern matching features mv !(*\(+([0-9])\)).ext /path/to/target/
正則表達式匹配所有不以 結尾的文件
(n).ext
,其中n
是一個或多個數字:+([0-9])
。您可以通過以下方式進行檢查
echo
:echo !(*\(+([0-9])\)).ext
印刷:
file.ext otherfile.ext
這取決於。如果我們可以假設任何名稱包含的文件
(
都應該被忽略,你可以這樣做:shopt -s extglob ## turns on fancy glob patterns mv !(*\(*) /path/to/target
如果您可以擁有其他名稱,
(
或者如果您只需要移動那些重複的文件,您可以執行以下操作:for f in *\(*; do ## Does this file have an original? [[ -e "${f%%(*}.${f##*.}" ]] && ## Move the original mv "${f%%(*}.${f##*.}" /path/to/target; done