我正在尝试编写一个非常简单的 bash 脚本,以便将文件扩展名 (.java) 添加到一堆没有扩展名的文件中。
如果他们有扩展名(比如 .txt),我会这样做:
#!/bin/bash
for file in `*.txt`;
do mv $file $file.java;
done
但是,我的文件没有扩展名。如何制作循环?我试过*.
没有运气。
谢谢你。
#!/bin/bash
for file in *; do
mv "$file" "$file".java;
done
如果您只想移动没有扩展名的文件,请尝试:
#!/bin/sh
for file in *; do
test "${file%.*}" = "$file" && mv "$file" "$file".java;
done
请注意,如果您的文件名合理,则上述所有双引号都是多余的。
尝试:
find . -maxdepth 1 -type f | sed 's/^\.\///; /\./d' | while read x; do mv "$x" "$x.java"; done
ls -1 | nawk '/.txt/{old=$0;gsub(/.txt/,".txt.java",$0);system("mv \""old"\" "$0)}'
从这里更新了答案
#!/bin/bash
for file in *.txt ; do mv $file `echo $file | sed 's/\(.*\.\)txt/\1java/'` ; done