OS Xでこれをやりたい:
ls -rt | xargs rm -i
ただし、rm
一部のファイルに空白が含まれているという事実に窒息しています。
BSD のバージョンの にはフラグls
がないため、OS X について言及します。-Q
を使用せずにこれを行う方法はありますfind -print0
か?
[sgeorge@sgeorge-ld staCK]$ touch "file name"{1..5}.txt
[sgeorge@sgeorge-ld staCK]$ ls -1
file name1.txt
file name2.txt
file name3.txt
file name4.txt
file name5.txt
[sgeorge@sgeorge-ld staCK]$ ls -rt | xargs -I{} rm -v {}
removed `file name5.txt'
removed `file name4.txt'
removed `file name3.txt'
removed `file name2.txt'
removed `file name1.txt'
また
[sgeorge@sgeorge-ld staCK]$ ls -1
file a
file b
file c
file d
[sgeorge@sgeorge-ld staCK]$ OLDIFS=$IFS; IFS=$'\n'; for i in `ls -1` ; do rm -i $i ; done ; IFS=$OLDIFS
rm: remove regular empty file `file a'? y
rm: remove regular empty file `file b'? y
rm: remove regular empty file `file c'? y
rm: remove regular empty file `file d'? y
見つけて削除してください。
find . -print -depth 1 -exec rm -i {} \;
より柔軟で、スペースでも問題ありません。
すべてのファイルを削除したい場合、何が問題になっていrm -i *
ますか?
これを試して
while read -u 3
do
rm -i "$REPLY"
done 3< <(ls -rt)