0

ユーザーが指定したディレクトリで奇数(不均一)なサイズのファイルを見つけて名前を変更する基本的なプログラムを作成する必要があります。コードを書きましたが、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 ”  
4

1 に答える 1

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ためですか?manページ-cにオプションがありません。statということ-fですか?(編集:わかりました、Macstatコマンド(BSDです)を見ていましstat。GNUバージョン-cではフォーマット指定に使用されます)

于 2013-10-19T15:00:18.740 に答える