我需要编写一个基本程序,它会在用户指定的目录中找到具有奇怪(不均匀)大小的文件,然后重命名它们。我编写了一个代码,但无法弄清楚它有什么问题因为我刚刚开始编程bash脚本...我的目录中有3个文件,这里是我得到的错误:
./Untitled: line 18: AppIcon.icns: command not found
mv: cannot stat ‘AppIcon.icns’: No such file or directory
./Untitled: line 18: AssociatedVm.txt: command not found
mv: cannot stat ‘AssociatedVm.txt’: No such file or directory
./Untitled: line 18: Info.plist: command not found
mv: cannot stat ‘Info.plist’: No such file or directory
我的脚本代码:
#!/bin/bash
n=0
echo “Specify directory”
read directory
if [ -d $directory ]; then
echo “Directory found”
else
echo “Directory not found”
exit 0
fi
for file in $( ls $directory );
do
fsize=$(stat "$directory/$file" -c %s)
if [ $((fsize%2))=1 ]; then
mv "$directory/$file" "$directory/$file.odd"
n=$((n + 1))
fi
done
echo ”Number of renamed files: $n ”
答案 0 :(得分:2)
我认为你的意思是
fsize=$(stat "$file" -c %s)
但你写了
fsize=stat "$file" -c %s
此外,如果从非$directory/$file
的目录运行脚本,则需要单独使用绝对路径($file
)而不是$directory
。
Bash使用-eq
进行整数比较,因此您还应该更改
if [ $((fsize%2))=1 ]; then
到
if [ $((fsize%2)) -eq 1 ]; then
-c %s
是什么?我在-c
手册页中没有看到stat
选项。你是说-f
吗? (编辑:好的我正在查看Mac stat
命令(BSD)。GNU version中的stat
使用-c
进行格式规范)