Si no tiene root pero tiene permisos para leer los directorios, su mejor opción probablemente sea buscar los archivos .swp
para el archivo en cuestión (asumiendo que el usuario no ha cambiado el intercambio predeterminado de vim ¡ubicación!):
$ find. -type f
./1/foo
./0/foo
./2/foo
$ cd 1
$ vi foo
^Z
[1] 19650
$ cd..
$ find -type f
./1/foo
./1/.foo.swp
./0/foo
./2/foo
Tenga en cuenta, sin embargo, que si edita foo
y .foo
en el mismo directorio, vim
deberá crear diferentes extensiones temporales de nombre de archivo:
-rw-r--r-- 1 user grp 12288 Feb 8 14:59.foo.swo
-rw------- 1 user grp 4096 Feb 8 14:58.foo.swp
Por lo tanto, es posible que desee buscar usandofind. -user username -name '.*.sw*'
Esto se parece un poco a un problema XY--¿qué problema mayor estás tratando de resolver? Si está tratando de administrar varios usuarios que editan archivos comunes, es posible que desee pasar a un sistema de administración de fuentes.
grep -F -f file2.txt file1.txt
Это позволит прочитать строки в file2.txt
и использовать их в качестве шаблонов для поиска в file1.txt
.
Если вы хотите проверять совпадения только во втором столбце, вы можете использовать эту команду awk:
awk -F: 'NR==FNR{a[$0];next}$2 in a' file2.txt file1.txt
Это прочитает каждую строку из file2.txt
и создаст из них массив (a
). Затем он пройдет через file1.txt
и проверит, существует ли значение в столбце 2 в массиве a
. Если это так, будет напечатана вся строка.
Вы можете просмотреть второй файл в цикле и выполнить grep из первого файла.
for pattern in `cat file2.txt` ; do grep $pattern file1.txt ; done
Если вы хотите найти только конец после двоеточия.
for pattern in `cat file2.txt` ; do grep :$pattern$ file1.txt ; done