从目录中删除特定文件

时间:2017-05-05 06:15:31

标签: shell ubuntu

我们在此名称格式的某个文件夹中有一些文件 BKK-20170428082153.war

我们需要删除当前日期之前一周的所有文件。

我已尝试过此命令find . -name "*.war" -type f -delete,但它没有检查我想要的日期规则。

任何人都可以帮助我。

3 个答案:

答案 0 :(得分:1)

给出的答案非常好,应该为您服务。

我仍然希望基于文件名删除而不是基于时间戳尝试此操作。

alias delete-weeks-war='for i in {1..7};do rm BKK-`date -v-${i}d +%Y%m%d`*.war; done'

用法

$ cd wars-directory
$ delete-weeks-war # simple as ... that

解释

# traverses the last seven days starting from yesterday
# set to 0..6 to start from today
for i in {1..7} 
do
    # calculates timestamp, only the part of year, month, day
    t=`date -v-${i}d +%Y%m%d` 
    # builds the expected file name
    # to cover all combinations for hour, time and seconds there is the asterisk
    file="BKK-${t}*.war"
    # removes the designated files
    rm $file
    # if no files found you will get an error like
    # rm: BKK-20170428*.war: No such file or directory
    # to get rid of this error message use the following rm instead of the previous
    # rm $file 2>/dev/null
done

我相信它完全符合您的需求。

答案 1 :(得分:0)

您可以使用public void share(String song){ File audio = new File("android.resource://com.dsbsoft.myApp/raw/+song+ ".mp3"); Intent share = new Intent(Intent.ACTION_SEND).setType("audio/*"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(audio)); startActivity(Intent.createChooser(share, "Share song")); }

  • 超过7天前查找文件:-ctime +7
  • 查找不到7天前的文件:-ctime -7
  • 发现文件xactly 7天前:-ctime 7

所以你想使用-ctime

find . -ctime -7检查"更改文件状态信息"。还有ctime检查"上次访问时间"和atime检查"最后修改时间"。有关更多详细信息,请参阅find的手册页。

答案 2 :(得分:0)

a + time ==访问或阅读文件,或-atime
c + time ==更改文件属性或修改,或-ctime
m + time ==更改文件内容或修改,或-mtime

+意味着比特定时间更长,例如:+7
-表示不到特定时间,例如-7 number正好表示该号码,例如7

出于您的目的(基于修改内容):

find . -name '*.war' -type f -mtime +7