DOS: ¿Listado de directorio que excluye un tipo de archivo?
-
08-07-2019 - |
Pregunta
En MS-DOS, si ingreso dir * .pdf
, obtendré todos los archivos PDF en un directorio. ¿Hay alguna manera de obtener todo pero archivos PDF? Algo así como dir! *. Pdf
?
¡Gracias!
Solución
Creo que hay una opción / v para los findtr que es equivalente a grep -v (incluya todas las líneas que no contienen el texto. Por lo tanto, estaría mirando:
dir | findstr /vi ".pdf"
La sintaxis puede ser ligeramente diferente, no he tenido mucha necesidad de usarla y no ejecuto Windows en mi ubicación actual.
Usar findtr /? desde un símbolo del sistema para más detalles.
O, si instala CygWin (mi herramienta de elección para este tipo de cosas), puede usar grep:
ls -al | grep -vi '\.pdf
Anexo :
En realidad no me di cuenta de esto, pero aparentemente findtr también admite expresiones regulares para que pueda usar:
dir | findstr /vi "\.pdf<*>quot;
igual que grep (no he probado esto, solo lo encontré en TechNet , por lo que deberá probarlo usted mismo).
Anexo :
En realidad no me di cuenta de esto, pero aparentemente findtr también admite expresiones regulares para que pueda usar:
<*>igual que grep (no he probado esto, solo lo encontré en TechNet , por lo que deberá probarlo usted mismo).
Otros consejos
Puede combinar el directorio con findtr para hacer casi lo que quiera:
dir * | findstr /vi .pdf
Sin embargo, tenga en cuenta que si un archivo se llama my.pdf.converted.txt, se arrojará incorrectamente aquí.
Si REALMENTE quieres ponerte elegante, aquí hay una versión completamente correcta, más apropiada para un script por lotes:
for /f %a in ('dir /b *') do @if "%~xa" neq ".txt" echo %a
Buena suerte, no importa lo que intentes :) DOS es "divertido".
Sé que ya está funcionando para ti, pero puedes hacerlo con la mayoría de las versiones de DOS (al menos las que recuerdo) como esta.
Attrib * .bad + H
dir / oE
Attrib * .bad -H
Lo que tiene el efecto de ocultar los que no desea mostrar, hacer el directorio y luego mostrarlos. Es un poco desagradable, debo admitirlo, pero parece que funciona.
En MS-DOS o CMD simplemente escribe para evitar archivos pdf:
dir | find/V ".pdf"
Pero recuerde que el recuento de archivos en la parte inferior de la salida incluirá los archivos pdf.
Además, también puede usar este comando para otras extensiones reemplazando " .pdf " a " .xxx " ;, donde xxx es cualquier extensión.
Aquí hay una manera simple sin usar findtr / find o canalizar a otro comando:
for %%a in (*) do (
if not exist %%~Na.pdf echo %%a
)
Básicamente, el bucle for recorrerá todos los archivos. El " si no existe " asegurará que no se imprima ningún archivo * .pdf
El %% ~ Na significa usar el nombre de archivo de %% una variable sin su extensión.