これは、現在のディレクトリからls -lt
を実行したときに取得する完全なファイル名です。
EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz
ファイル名も日付で構成されます。上記のファイルの日付は20120811
です。
そのため、EXPORT_v1x0
で始まり、日付が20120825
未満のすべてのファイルを削除しようとしています。
コマンドラインから以下のスクリプトを使用してファイルを削除しています
find . -name "EXPORT_v1x0*" | awk -F'_' '$3<20120825' | xargs rm
しかし、上記のコマンドを使用してファイルを削除すると、常に以下の例外が発生します。
rm: ./EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz not removed: Disc quota exceeded
この例外の意味を誰かに教えてもらえますか?そして、この問題を克服する方法は?
SunOS
を実行しています。
bash-3.00$ uname -a
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc
再度rmを使用できるように、クォータを元に戻すには、cat /dev/null > file
(またはecho > file
)のような操作を行う必要があります。
クォータを下回るまで、見つけた最も小さなファイルを手動で削除します。その後、標準の方法で削除できます。
@VolodymyrSavchenkoの回答が却下された理由はわかりません。実際、それが私にとってもうまくいった唯一のトリックでした。
HPCで作業していますが、クォータが不足しています。
-ほとんどすべてのコマンドを試すのに時間がかかりました。
-rsync
リモートで--remove-source-filesを使用して機能していませんでした:
rsync -avz --remove-source-files -e "ssh -p ####" usr@Host:path/file.dat ./
receiving file list ... done
rsync: sender failed to remove file.dat: Disk quota exceeded (122)
-rmほとんどのファイルが機能していませんでした:
[usr@server ~]$ rm path/file.dat
rm: cannot remove 'path/file.dat': Disk quota exceeded
-やって
cat /dev/null path/file
どうやら機能するようですが、rm'ingは機能しません(まだクォータ超過エラーメッセージがあります)(理由はわかりません)。
それでも、「触れた」だけの小さなファイル(つまり、非常に小さなサイズの空のファイル)を削除すると機能し、クォータを下回り、通常どおりファイルを削除できるようになりました。
ファイルを削除する権限がないか、読み取り専用であると思います。 rm-fを試してください。クォータメッセージは、ディスクに書き込もうとしているものから送信されます。