在 Ubuntu 中查找、移动和删除

在 Ubuntu 中查找、移动和删除

操作系统:Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-62-generic x86_64)

我有一个如下目录:

~/total/
    test1/
        test1.txt
        some_other_file_i_dont_care.py
    test2/
        test2.tex
        some_folder_i_dont_care/
    test3/
        test3.csv

我想搬家仅限文本文件并删除其父文件夹(其中包含相同名称作为我感兴趣的文件)。

所以结果应该是这样的:

~/total/
    test1.txt
    test2.tex
    test3.csv

我认为我离这个功能的解决方案不远了:

find ~/total/ -type f  \( -iname '*.txt' -o -iname '*.tex' -o -iname '*.csv' \)          
| xargs mv -ifile file ~/total/

但是,我该如何删除剩余的文件夹呢?

答案1

您可以一次性完成这两个操作find

find . -depth \( -regex '.*\.\(txt\|tex\|csv\)' -exec mv -- {} . \; \
                 -o -not -name . -delete \)
  • -regex '.*\.\(txt\|tex\|csv\)' -exec mv -- {} . \;.txt将找到带有或.tex或扩展名的文件csv,并将其移动到当前目录

  • -not -name . -delete然后会删除其他所有内容

例子 :

total$ tree
.
├── test1
│   ├── some.py
│   └── test1.txt
├── test2
│   ├── somedir
│   └── test2.tex
└── test3
    └── test3.csv


total$ find . -depth \( -regex '.*\.\(txt\|tex\|csv\)' -exec mv -- {} . \; -o -not -name . -delete \)


total$ tree
.
├── test1.txt
├── test2.tex
└── test3.csv

相关内容