簡體   English   中英

將具有特定擴展名的子目錄文件重命名為父文件夾的名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM