我想将当前工作目录文件复制到各个文件,如下所示。 .sh文件---> sh_files .txt文件---> txt_files
我确实尝试使用以下脚本,但遇到了一些错误 “cut:txt.1a:没有这样的文件或目录” 任何人都有这个scenario.suggest的备用脚本....
ls -f >list_files.txt
for i in `cat list_files.txt`
do
rev1=`echo $i | rev`
k=`cut -c 1-3 $rev1`
if[ "$k"= ".sh"]
then
echo $i >file_sh.txt
else
echo $i >file_txt.txt
fi
done
答案 0 :(得分:2)
无需编写额外的list_files.txt
#!/bin/bash
find . -maxdepth 1 -type f | while read i
do
ext="${i/*./}"
if [ "$ext" = "sh" ]; then
echo $i >>file_sh.txt
elif [ "$ext" = "txt" ]; then
echo $i >>file_txt.txt
else
echo $i >>file_other.txt
fi
done
-maxdepth 1
限制find
仅搜索没有子目录的此目录
答案 1 :(得分:1)
使用rev和cut提取扩展可能比它需要的更复杂。这是一个通过删除所有内容来计算扩展名的版本,包括最后一个'。'在文件名中。我还使用了>>而不是>这样就可以附加结果,而不是覆盖输出文件。
#!/bin/bash
ls -f >list_files.txt
for i in $(cat list_files.txt)
do
ext="${i/*./}"
if [ "$ext" = "sh" ]; then
echo $i >>file_sh.txt
elif [ "$ext" = "txt" ]; then
echo $i >>file_txt.txt
else
echo $i >>file_other.txt
fi
done