[英]Rename subdirectory files with specific extention to parent folder's name
我有許多文件夾,我需要用特定的擴展名(即“.jpeg”)將其中的一些文件重命名為父文件夾的名稱加上其現有名稱。
META_10234
--- file1.jpeg
--- file2.jpeg
META2_10235
--- file1.jpeg
--- file2.jpeg
所需的 output:
META_10234
---META_10234_file1.jpeg
---META_10234_file2.jpeg
我試過做這樣的事情:
for file in $(ls | grep 'META_*'); do mv "./$file/*.jpeg" "./$f/$f*_.jpeg"; done;
錯誤是:
mv ./META_10234/.jpeg: No such file or directory
如何匹配子目錄中的任何文件?
這非常簡單。
不需要ls
/ grep
,只需使用一個簡單的 glob - 你確實需要循環,但請記住你是單獨重命名文件,而不是整體重命名。
$: key="${PWD##*/}"
$: for f in *.jpeg; do mv "$f" "${key}_$f"; done
$PWD
是當前登錄的目錄。 Bash 參數解析使用#
去掉字符串前面的glob模式。 ##
使它“貪婪”,匹配最多而不是最少。 這意味着"${PWD##*/}"
盡可能多地從值的前面刪除,直到它看到/
(即前導路徑),只留下當前目錄的名稱。
其他工具還有其他方法,但除非你有無數的工具,否則這會很好地處理它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.