2017-09-28 1 views

답변

0

, 당신은이를 사용할 수 있습니다

rm "$(ls -t | tail -1)" 
+0

영업 이익은 _oldest 만들어 fileS_ 말 했는가는 awk 부분을 수정해야하고, 예를 들면 실패 : "$ (LS -t | 꼬리 -2)"'1! '. –

1

이 명령은 당신이 원하는 정확히 무엇을 할 것,

find . -mindepth 2 -type f -printf '%T+ %p\n' | sort | awk 'NR==1{print $2}' | xargs rm -v 

간략한 설명 ,

  • find . -mindepth 2 -type f -printf '%T+ %p\n' : 최소 깊이를 2로 제한하면, 은 w 하위 디렉토리 또는 더 이상의 파일. 그런 다음 파일의 마지막 수정 시간과 이름을 인쇄합니다.
  • find ...의 출력을 sort으로 파이프하여 모든 발견 된 파일의 수정 시간을 정렬합니다.
  • awk 'NR==1{print $2}' : 사용 서브 디렉토리의 이름을 전달하기 삭제 상기 요청에 대한 오래된 파일

Eidt

: awk에 출력

  • xargs rm -v 오래된 파일의 이름을 가져 파이프 변수를 수정하려면 다음과 같이 수정하십시오. 당신은

    $ a="sub_dir1" 
    $ b="sub_dir2" 
    $ find ... | sort | awk -v a=$a -v b=$b '$2 ~ "./" a "/" || $2 ~ "./" b "/"{print $2 ;exit}' | xargs ... 
    
  • +0

    동의 함. 다른 스크립트에서이 명령을 포함하는 함수를 호출 할 것입니다. 여기에 해당 스크립트에서 하위 폴더 이름 (A/B/C로)을 전달하려고합니다. 하위 폴더 이름으로 매개 변수를 사용하여이 스크립트에서 다른 스크립트의 함수를 호출하는 방법은 무엇입니까? – Anony

    +0

    @Anony, 귀하의 추가 요청에 대한 수정 사항을 확인하십시오. – CWLiu

    +0

    잘 작동합니다 .. 고마워. 문제는 B에서 삭제할 파일이 없으며 디스크 사용에 따라 A/C로 이동해야한다는 것입니다. 어떻게해야합니까? delete_function에서만 수행하고 싶습니다 – Anony

    관련 문제