将unix目录中的所有文件转换为另一种格式

时间:2014-01-20 10:53:49

标签: unix for-loop sed awk directory

我在unix目录中有一个文件列表。所有这些都被称为something.bed,我希望将它们全部转换为something.txt

.bed格式很容易被txt编辑器读取,但在python等编码语言中不能被识别为txt文件,因此标准的txt解析脚本似乎无法读取。

对于任何具有中级unix体验的人来说,这可能是一个非常简单的问题,但是我没有使用unix并且环顾四周并且找不到快速答案

我试过了:

 for i in *.bed
 do cat > *.txt
 done

它只提供了一个名为* .txt的文件,其中我正在寻找1.bed成为1.txt而2.bed成为2.txt等

非常感谢任何指针或解决方案

2 个答案:

答案 0 :(得分:2)

for i in *.bed; do mv $i ${i/bed/txt}; done

实际上,以下会更安全,因为我的第一次尝试会转换为#bed; bed.bed"进入" txt.bed"。

for i in *.bed; do mv $i ${i/bed$/txt}; done

答案 1 :(得分:1)

只需在for循环中正确添加变量:

for i in *.bed
do
   cat $i > ${i%.*}.txt
done

虽然最好使用mv

for i in *.bed
do
   mv $i ${i%.*}.txt
done

${i%.*}.txti.bed转换为i.txt.


为什么你的尝试不起作用?

for i in *.bed
do
  cat > *.txt
done

当您在for循环中时,要使用的变量是i,而不是*。也就是说,当循环遍历*.bed文件时,它是存储值的i变量。因此,您需要使用i来引用它们。