在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
当前回答
这是我发现的在OSX和Linux上工作的最灵活的解决方案,它也可以很好地与git一起工作!
找到。-name "*.js" -exec bash -c 'mv "$1" "${1%.js}"Tsx ' - '{}' \;
对于git:
找到。-name“* . js - c“git bash -exec mv“1美元${1%。js的”。tsx“-”{}“\”
其他回答
你想要使用rename:
rename -S <old_extension> <new_extension> <files>
rename -S .html .txt *.html
这正是你想要的-它将所有匹配*.html的文件的扩展名从.html更改为.txt。
注意:Greg Hewgill正确地指出这不是bash内置的;是一个单独的Linux命令。如果你只是需要Linux上的一些东西,这应该可以工作;如果你需要一些更跨平台的东西,那就看看其他的答案。
我用。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
~$
很好很简单!
find . -iname *.html -exec mv {} "$(basename {} .html).text" \;
不幸的是,可移植并不是一件简单的事情。你可能需要一点魔法。
for file in *.html; do echo mv -- "$file" "$(expr "$file" : '\(.*\)\.html').txt"; done
一旦你满意了,就把回声移开,它会按你想的做。
Edit: basename对于这种特殊情况可能可读性更好一些,尽管expr通常更灵活。
一行,没有循环:
ls -1 | xargs -L 1 -I {} bash -c 'mv $1 "${1%.*}.txt"' _ {}
例子:
$ ls
60acbc4d-3a75-4090-85ad-b7d027df8145.json ac8453e2-0d82-4d43-b80e-205edb754700.json
$ ls -1 | xargs -L 1 -I {} bash -c 'mv $1 "${1%.*}.txt"' _ {}
$ ls
60acbc4d-3a75-4090-85ad-b7d027df8145.txt ac8453e2-0d82-4d43-b80e-205edb754700.txt