안녕하세요. 제목처럼 여러 파일 들 중에서 라인 수가 1인것만 골라서 삭제하는 shell을 작성하려고하는데 익숙치 않아서 도움 요청 드립니다.
추운 날씨에 건강 조심하세요.
for f in "$@" do if [ $(wc -l "$f" | awk '{print $1}') -eq 1 ] then echo "$f" # Do something fi done
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)
텍스트 포맷에 대한 자세한 정보
<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]
대충...
for f in "$@"
rm -rf $f
rm -rf $f
답변이 사악하게 느껴지네요. 이 코드들을 따라하지
답변이 사악하게 느껴지네요. 이 코드들을 따라하지 마세요.
ruby 로 맛배기만 보여드려요.
ruby 로 맛배기만 보여드려요.
file 을 열고 "\n" 개수를 체크하면 됩니다. "\n" 이 1개 이면 파일을 삭제하면 되겠죠.
디렉토리는... dirent 던가.. recursive 쉽게 됩니다.
아래 코드는 한글 파일 이름 복구하는 코드입니다.
https://hodong.gitlab.io/docs/recover-broken-hangul-file-name/
아래 repair_cp949 함수를 remove_file 함수로 변경하면 되겠죠.
참쉽죠잉?
루비 코드 언제봐도 참 경이롭고 짜임새가 힘이있어요^
루비 코드 언제봐도 참 경이롭고 짜임새가 힘이있어요^^^
훌륭한 코드에 감사드립니다^^^
[우분투 18.04 파여폭스 나비에서 작성했습니다]
--
^고맙습니다 감사합니다_^))//
과찬이십니다. 코드가 좀 거시기한걸요. 수정하고
과찬이십니다. 코드가 좀 거시기한걸요. 수정하고 싶지만... 그러다보면 오늘 잠 못자니...
일단, 잠부터 잡시다 ㅋㅋㅋ
진짜로 지우는대신 안전하게 삭제대상 안내만 해드립니다^^^
[우분투 18.04 파여폭스 나비에서 작성했습니다]
--
^고맙습니다 감사합니다_^))//
댓글 달기