在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
当前回答
试试这个
rename .html .txt *.html
用法:
rename [find] [replace_with] [criteria]
其他回答
类似于之前的建议,我是这样做的:
find . -name '*OldText*' -exec sh -c 'mv "$0" "${0/OldText/NewText}"' {} \;
我首先用
find . -name '*OldText*' -exec sh -c 'echo mv "$0" "${0/OldText/NewText}"' {} \;
我用。bashrc写了这段代码
alias find-ext='read -p "Path (dot for current): " p_path; read -p "Ext (unpunctured): " p_ext1; find $p_path -type f -name "*."$p_ext1'
alias rename-ext='read -p "Path (dot for current): " p_path; read -p "Ext (unpunctured): " p_ext1; read -p "Change by ext. (unpunctured): " p_ext2; echo -en "\nFound files:\n"; find $p_path -type f -name "*.$p_ext1"; find $p_path -type f -name "*.$p_ext1" -exec sh -c '\''mv "$1" "${1%.'\''$p_ext1'\''}.'\''$p_ext2'\''" '\'' _ {} \;; echo -en "\nChanged Files:\n"; find $p_path -type f -name "*.$p_ext2";'
在"/home/<user>/example-files"这样的文件夹中:
/home/<用户> /示例文件: 中 file2.txt file3.pdf file4.csv
命令的行为是这样的:
~$ find-text
Path (dot for current): example-files/
Ext (unpunctured): txt
example-files/file1.txt
example-files/file2.txt
~$ rename-text
Path (dot for current): ./example-files
Ext (unpunctured): txt
Change by ext. (unpunctured): mp3
Found files:
./example-files/file1.txt
./example-files/file1.txt
Changed Files:
./example-files/file1.mp3
./example-files/file1.mp3
~$
这为我工作在OSX从.txt到.txt_bak
find . -name '*.txt' -exec sh -c 'mv "$0" "${0%.txt}.txt_bak"' {} \;
这是我用来重命名。edge文件为。blade.php
for file in *.edge; do mv "$file" "$(basename "$file" .edge).blade.php"; done
很有魅力。
如果使用bash,则不需要使用sed、basename、rename、expr等外部命令。
for file in *.html
do
mv "$file" "${file%.html}.txt"
done