이름이 시작하는 파일을 제거하는 -
것은 FAQ이지만 다른 문제가있는 것 같습니다.
질문에서 언급 한 솔루션 중 :
rm -- -
작동합니다.
rm "-"
그것과 다르지 않습니다 rm -
. 따옴표는 셸로 제거되며 rm
명령은 단일 하이픈을 인수로 간주합니다. 인용 부호는 쉘 메타 문자를 이스케이프 처리하는 데 유용합니다. 하이픈은 rm
쉘이 아닌에 특수합니다 .
rm "\-"
인용 부호는 백 슬래시를 이스케이프하므로 이름이 백 슬래시와 하이픈으로 구성된 파일을 제거합니다.
rm \-
이것과 rm "-"
같습니다 rm -
.
적어도 GNU coreutils 버전의 rm
경우 rm -
실제로는 이름이 하이픈으로 구성된 파일을 실제로 제거하거나 제거하려고 시도합니다. 파일 이름이 같으면 지금 사라질 것입니다. 파일 이름이 하이픈 처럼 보입니다 .
ls | cat -A
그것이 실제로 불려지는 것에 대한 아이디어를 제공해야합니다.
다음은 현재 디렉토리의 각 파일을 묻는 메시지를 표시하고 제거 여부를 묻는 Perl 스크립트입니다. 보증없이 제공되지만 간단히 테스트했습니다.
#!/usr/bin/perl
use strict;
use warnings;
$| = 1;
opendir my $DIR, '.' or die ".: $!\n";
my @files = sort grep { -f $_ } readdir $DIR;
closedir $DIR;
foreach my $file (@files) {
print "Remove $file? ";
my $answer = scalar <>;
if ($answer =~ /^[Yy]/) {
unlink $file or warn "$file: $!\n";
}
elsif ($answer =~ /^[Qq]/) {
exit 0;
}
}
편집 : 덜 정교한 해결책 : 파일 이름이 하나의 문자 인 rm ?
경우 다른 파일과 함께 파일을 제거해야합니다.