Bashで長さ0のファイルを削除する

Bashで長さ0のファイルを削除する

Linux端末内でファイルに移動し、ファイルが空の場合は削除するbashスクリプトを作成したいと思います。

#!/bin/bash
echo " Enter name of a directory"
read Dir
for Directory in $( ls $HOME )
do 
  test -d $HOME/$dir
  if [ $# -eq 0 ]
  then 
    for filename in $( ls $HOME/$Dir )
    do 
      test -d $HOME/$dir/$filename
      if [ ! -s "$filename"  ]
      then
        rm $HOME/$dir/$filename
      else 
        echo " not empty"
      fi 
    done 
  else 
    echo " $Dir is not a directory" 
  fi 
done

これは私が使っているコードですが、うまくいきません。生成されたファイルを認識しますが、空でも削除しません。 Salahはそのようなファイルやディレクトリを表示しません

ベストアンサー1

編集1(Erik Renouf)永続性The Open Group Base Spec Issue 6で指定されたコンテンツを探す

編集2(ワイルドカード)+記号と生{}

これを試して交換してください。私のディレクトリ次のコマンドラインに、計算するディレクトリ名を入力します。

find "${HOME}"/mydir -size 0 -type f -exec rm {} +

"${HOME}"/mydir ディレクトリとそのサブディレクトリ (存在する場合) にあるすべての空のファイルを削除します。

スクリプトのバージョンは次のとおりです。

#!/bin/bash --
find "${HOME}"/"${1}" -size 0 -type f -exec rm {} +

テスト

以下に空のファイルをすべてリストしてください。テスト:

$ find "${HOME}"/testd -size 0 -type f
/home/jay/testd/empty_file.txt

空のファイルを削除するには、スクリプトを使用してください。

$ chmod +x clearner.sh
$ ./clearner.sh testd

空のファイルを確認してください。

$ find "${HOME}"/testd -size 0 -type f
$

おすすめ記事