Вы можете использовать терминал в режиме vim. Если вы наберете в консоли терминала set -o vi
Раскладка клавиатуры терминала теперь переключается в режим vim.
другой способ :копировать/вырезать буфер обмена мышью вставить в терминал
CTRL+SHIFT+V
Чтобы найти файлы, используйте find
. Чтобы обрезать файл, используйте truncate
. Я также использую xargs
, чтобы обратиться к truncate
. Однако вы можете использовать опцию -exec
для find
, чтобы избежать использования xargs
.
Что-то вроде этого должно работать. (не проверено)
find. \( -iname '*.mkv' -o -iname '*.avi' -o -iname '*.mp4' \) -print0 | xargs -0 echo truncate -s 0
Удалите echo
после проверки правильности вывода команд с правильными именами файлов -.
Вы можете использовать параметр globstar
bash, который включает символ **
глобуса:
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
При этом вы можете использовать **/*.mkv
для рекурсивного поиска всех файлов или каталогов, имя которых заканчивается на .mkv
. Далее, не думайте об этом как об удалении оригинала и создании нового файла. Все, что вам нужно сделать, это очистить исходный файл. Самый простой способ сделать это > file
. Это откроет файл для записи, перезаписав все, что там уже было. Поскольку вы на самом деле ничего не пишете, это приведет к пустому файлу.
Имея это в виду, рассмотрим следующий пример:
$ tree -h
.
├── [4.0K] dir1
│ ├── [4.0K] subdir1
│ │ ├── [ 48K] file.mp3
│ │ └── [ 53M] file.mp4
│ └── [4.0K] subdir2
│ └── [136M] file2.avi
├── [4.0K] dir2
│ ├── [399K] file.mkv
│ └── [4.0K] subdir1
│ └── [548M] file3.avi
└── [ 30M] file.avi
5 directories, 6 files
У нас есть 6 файлов, 5 из которых соответствуют искомому шаблону(dir1/subdir1/file.mp3
не следует изменять ). Чтобы очистить файлы, соответствующие указанному вами шаблону, вам просто нужно сделать это:
$ shopt -s globstar
$ for f in **/*.mp4 **/*.avi **/*.mkv; do > "$f"; done
если теперь снова запустить tree
, вы увидите, что все файлы, кроме mp3
, были очищены:
$ tree -h
.
├── [4.0K] dir1
│ ├── [4.0K] subdir1
│ │ ├── [ 48K] file.mp3
│ │ └── [ 0] file.mp4
│ └── [4.0K] subdir2
│ └── [ 0] file2.avi
├── [4.0K] dir2
│ ├── [ 0] file.mkv
│ └── [4.0K] subdir1
│ └── [ 0] file3.avi
└── [ 0] file.avi
В качестве альтернативы, вы можете использовать find
вместо предложенного Ctrl -alt -del or, но нет необходимости в xargs
или -print0
или что-то в этом роде. Просто сделайте:
find. \( -name '*.mkv' -o -name '*.avi' -o -name '*.mp4' \) -exec sh -c ' > "$1"' mysh {} \;