Зацикливание и извлечение файлов, соответствующих пути

296
Alex

Я в настоящее время в каталоге со многими каталогами.

$ ls the bad icons 100 the games icons 100 the beach & camping icons 100 the halloween icons 100 

Как мне извлечь все png-файлы, которые соответствуют следующему пути, и вывести их в каталог?

//png/colored/512x512/*.png 
0

2 ответа на вопрос

1
RalfFriedl

Ты пробовал это

mv //png/colored/512x512/*.png 

Если вы получили сообщение о том, что файлов слишком много, а команда слишком длинная, попробуйте

echo //png/colored/512x512/*.png | xargs mv --target-directory 
Я всегда рекомендую использовать `mv -i` или` mv -n` при любом массовом перемещении, чтобы избежать тихой и необратимой потери данных при наличии конфликтующих имен. В этом случае это * должно * быть безопасным, но я не люблю на это полагаться. Gordon Davisson 5 лет назад 1
Разве Xargs не нужно указывать что-то делать, например, запускать `mv`? По умолчанию это `echo`. А что будет, если в именах файлов есть пробелы? Ввод xargs по умолчанию ограничен пробелами / символами новой строки. И как `` становится одним из четырех имен папок (которые содержат пробелы)? Xen2050 5 лет назад 0
0
Xen2050

Поскольку вы уже находитесь в каталоге, вы можете использовать .с find:

find . -path "*/png/colored/512x512/*.png" -exec mv -t TARGETDIR {} + 

Если вы хотите сначала просмотреть найденные файлы, удалить -execи следующие (или заменить их | less), команда find выведет имена файлов в stdout по умолчанию, как показано в:

find . -path "*/png/colored/512x512/*.png" | less 

Вы можете mv«s -i, --interactiveвозможность запрашивать перед перезаписью, в случае, если есть конфликтующие имена файлов.

Похожие вопросы