Linux
如何通過在文件開頭添加公共字元串來重命名多個文件?
我有 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