Linux Перемещение текстовых файлов, не начинающихся со строки, в другую папку - PullRequest
0 голосов
/ 29 марта 2020

Ситуация
У меня есть каталог A, у меня в папке есть куча файлов и папок. Например, папка B, foler C, tmp1.txt, Hello.txt, tmp3.txt, okay.txt.
И в папке B есть также несколько файлов.
Так что я хочу переместить все txt-файлы рекурсивно в другую папку, такую ​​как /home.
Вот мой код.

find . -name "*.txt"| grep -v [\s\S]*tmp[\s\S]* -exec mv {} /home \;

Я могу выбрать только эти файлы, однако он не выполнит операцию перемещения.

enter image description here

, потому что linux find имеет путь в результате. Так что меня это сильно раздражает.

1 Ответ

0 голосов
/ 29 марта 2020

Чтобы переместить только обычные файлы, добавьте -type f и исключите ненужные файлы с помощью \!:

find . -type f -name '*.txt' \! -name '*tmp*' -exec mv -i -t /home {} +

-i запрашивает разрешение на перезапись файла, если он уже существует существует, и + вместо \; используется для перемещения максимально возможного количества файлов с одним вызовом mv (и поэтому нам нужно указать целевой каталог с параметром -t, так как {} содержит больше чем один файл).

...