Linux

如何通過在文件開頭添加公共字元串來重命名多個文件?

  • August 31, 2017

我有 100 個文件。我想在所有文件名之前添加一個文本“新”。

請幫我。提前致謝。

例子:

file1.txt ---> new_file1.txt
.
.
.
.
file100.txt ---> new_file100.txt

請提供重命名多個文件的解決方案。這是我嘗試過的。但這不是更好的解決方案。


子彈@簡訊:~/test1$ ls -l
共 0
-rw-rw-r-- 1 巴拉巴拉 0 8 月 31 日 19:10 file1.txt
-rw-rw-r-- 1 巴拉巴拉 0 8 月 31 日 19:10 file2.txt
-rw-rw-r-- 1 巴拉巴拉 0 8 月 31 日 19:10 file3.txt
bala@SMS:~/test1$ mv file1.txt new_file1.txt
bala@SMS:~/test1$ mv file2.txt new_file2.txt
bala@SMS:~/test1$ mv file3.txt new_file3.txt
巴拉@簡訊:~/test1$ls
new_file1.txt new_file2.txt new_file3.txt
巴拉@簡訊:~/test1 $

您應該使用循環來更改多個文件的文件名:

for file in *
do
   mv -v ${file} new_${file}
done

一行中的相同程式碼:

for file in *; do mv -v ${file} new_${file}; done
$ find . -type f -name "file*.txt" -execdir mv {} new_{} \;

這將在目前目錄(或以下)中查找名稱與 pattern 匹配的所有正常文件file*.txt,並通過在其名稱中添加前綴new_來重命名這些文件。

這需要一個find理解-execdir(大多數現代find實現都這樣做)。該-execdir選項的作用類似於-exec但在找到的東西的目錄中執行實用程序 ( mv)。此外,{}將包含找到的事物的基本名稱。

要僅限於目前目錄,請在之前添加-maxdepth 1某處-execdir


bash-4.4$ mkdir dir{1..10}
bash-4.4$ touch dir{1..10}/file{1..10}.txt

bash-4.4$ ls
dir1  dir10 dir2  dir3  dir4  dir5  dir6  dir7  dir8  dir9

bash-4.4$ ls dir5
file1.txt   file2.txt   file4.txt   file6.txt   file8.txt
file10.txt  file3.txt   file5.txt   file7.txt   file9.txt

bash-4.4$ find . -name "file*.txt" -execdir mv {} new_{} \;

bash-4.4$ ls dir5
new_file1.txt    new_file2.txt    new_file4.txt    new_file6.txt    new_file8.txt
new_file10.txt   new_file3.txt    new_file5.txt    new_file7.txt    new_file9.txt

引用自:https://unix.stackexchange.com/questions/389514