2

我正在尝试编写一个非常简单的 bash 脚本,以便将文件扩展名 (.java) 添加到一堆没有扩展名的文件中。

如果他们有扩展名(比如 .txt),我会这样做:

#!/bin/bash
for file in `*.txt`; 
do mv $file $file.java; 
done

但是,我的文件没有扩展名。如何制作循环?我试过*.没有运气。

谢谢你。

4

4 回答 4

4
#!/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

请注意,如果您的文件名合理,则上述所有双引号都是多余的。

于 2013-01-10T12:25:08.827 回答
0

尝试:

find . -maxdepth 1 -type f | sed 's/^\.\///; /\./d' | while read x; do mv "$x" "$x.java"; done
于 2013-01-10T12:47:53.913 回答
0
ls -1 | nawk '/.txt/{old=$0;gsub(/.txt/,".txt.java",$0);system("mv \""old"\" "$0)}'

从这里更新了答案

于 2013-01-10T12:29:29.960 回答
0
#!/bin/bash
for file in *.txt ; do mv $file `echo $file | sed 's/\(.*\.\)txt/\1java/'` ; done
于 2013-01-10T12:30:28.867 回答