我已经使用该命令在多个目录中重命名文件,然后将JPG更改为JPG,因此我具有一致性。
find . -name '*.jpg' -exec sh -c 'mv "$0" "${0%.JPG}$.jpg"' {} ;
您是否知道如何将其更改为"文件名"
的名称包含文件夹名称我正在执行一个文件夹中,该文件夹包含约2000个文件夹(SKU)或产品...以及每个SKU文件夹中,都有9张图像。1.jpg 2.jpg .... 9.jpg。
所以底线是我有2000张名称1.jpg,2.jpg ... 9.jpg。我需要这些文件是唯一的,例如:
folder-name-1.jpg ... folder-name.2.jpg
...在每个文件夹中。
任何帮助将不胜感激。
例如,我可以按照以下方式进行:
$ find . -iname '*.jpg' | while read fn; do name=$(basename "$fn") ; dir=$(dirname "$fn") ; mv "$fn" "$dir/$(basename "$dir")-$name" ;done
./lib/bukovina/version.jpg ./lib/bukovina/bukovina-version.jpg
./lib/bukovina.jpg ./lib/lib-bukovina.jpg
您可以使用精细的单线:
find . -name '*.jpg' -execdir
bash -c 'd="${PWD##*/}"; [[ "$1" != "$d-"* ]] && mv "$1" "./$d-$1"' - '{}' ;
此命令使用安全方法来检查当前目录名称是否已经将图像名称前缀为前缀。您也可以多次运行它,并且第一次运行后不会重命名。
要获取可以执行$(basename $(dirname ${FILE}))
的文件的文件夹名称,其中${FILE}
是一条可能是相对的路径,但必须至少包含一个文件夹。find
这不应该是问题。如果是,只需从一个目录运行。
find . -name '*.jpg' -exec sh -c 'mv "$0" "$(basename $(dirname $0))-${0%.JPG}$.jpg"' {} ;
或,如果您当前目录中有JPEG:
find ../<dirname> -name '*.jpg' -exec sh -c 'mv "$0" "$(basename $(dirname $0))-${0%.JPG}$.jpg"' {} ;