1

Я пользуюсь DOS 22 года, но я новичок в Linux. Так в Linux, когда я выполняю

ls -R *.zip

Почему я получаю:

ls: * .zip: нет такого файла или каталога

Когда я на вершине огромного дерева папок и файлов? Или как мне это сделать?

Dir /s *.zip

В линуксе?

2 ответа2

3

Попробуйте ls -R|grep .zip или для полного пути:

find .  -name '*.zip'

Это позволит найти любые файлы, заканчивающиеся на .zip в текущем каталоге и любых подкаталогах.

Кажется, он немного длиннее, но намного мощнее, чем способ окон dir /s *.zip .

3

Чтобы немного расширить этот ответ, в Linux подстановочные знаки расширяются оболочкой, что означает, что оболочка будет вызывать команду со списком совпадающих имен файлов в качестве аргументов. И оболочка только ищет в текущем каталоге соответствующие файлы (или в любом другом каталоге, указанном вами до подстановочного знака). Например, такая команда как:

ls *.zip

будет фактически переводить на:

ls file1.zip file2.zip file3.zip

И, если в текущем каталоге нет файлов .zip , буквальное имя файла *.zip передается команде, и в этом случае он не штрафует файл с именем *.zip . (A * является допустимым символом в имени файла Unix/Linux, кстати). Теперь, если вы не хотите, чтобы оболочка расширяла подстановочные знаки, но вместо этого, если вы хотите, чтобы подстановочный знак передавался непосредственно в вызываемую вами команду, вам придется заключить его в кавычки. Это имеет интересный эффект в том, что такие команды как:

find . -name *.zip

даст ожидаемые результаты, если в вашем текущем каталоге нет файлов .zip (команда find видит *.zip). Но если у вас есть один или несколько файлов .zip в текущем каталоге, то выполняется:

find . -name file1.zip file2.zip

который не найдет совпадений ни в каких подкаталогах (если только они не имеют точного имени file1.zip или file2.zip и т. д.). Таким образом, мораль этой истории заключается в том, что при использовании find обязательно используйте кавычки вокруг любого имени файла с подстановочными знаками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .