Если имя вашего файла называется Myfile.txt, вы можете запустить:
grep -Ev '[Tt][Tt]|[Hh][Hh]' Myfile.txt | awk '{ gsub("([^[:alnum:]]|^)[[:alnum:]]{4}([[:space:]]|[[:punct:]])"," D ");print $0}' > MyEditedFile.txt
Попробуйте запустить:
ls --sort=none --no-group
или ограничиться некоторым количеством файлов, например.
ls --sort=none --no-group | head -500
Использование ls
для работы с большим каталогом очень неэффективно, так как GNU ls
будет читать все записи в каталоге, прежде чем возвратить любую из них, даже с --sort=none
, потому что он хочет, чтобы вывод был "красивым". Это медленно и использует много оперативной памяти, поскольку каталог ext4 может содержать миллионы файлов.
Вместо этого вы должны использовать find
для вывода списка файлов в каталоге, который будет распечатывать имена файлов, как только они будут прочитаны из каталога. Если вы хотите найти определенные файлы (, например. все файлы «*.jpg» размером менее 1 МБ ), вы можете запустить, например.
find /my/directory -type f -name "*.jpg" -size -1M
См. find (1 )справочную страницу для получения полной информации о том, как его использовать.
Как только вы найдете кучу файлов, с которыми хотите что-то сделать, вы можете использовать xargs
для запуска команды для каждого файла. Например, для удаления временных файлов используйте, например.:
find /my/directory -name "*.tmp" -type f -print0 | xargs -0 rm
или переместить их в другой каталог, например:
find /my/directory -name "*.jpg" -print0 | xargs -0 -I '{}' mv '{}' /my/otherdirectory
или что-то еще. Программа xargs
запускает специальную команду для каждого файла, который она считывает из стандартного ввода, подробности см. в xargs (1 )справочной странице . Команда mv
немного сложнее, чем rm
, потому что mv
нужно поместить целевой каталог в конец команды, а xargs
обычно добавляет все файлы после указанной команды.
Вместо этого вы можете сохранить список файлов в выходной файл, например find... > /tmp/file_list
, а затем отредактировать file_list
, чтобы он содержал только те файлы, которые вы хотите удалить/переместить, и передать их в xargs
отдельно:
xargs -a /tmp/file_list -I '{}' mv '{}' /my/otherdir