Si el directorio al que desea ir es /media/448AF1848AF172B2/Windows/System32/config/
, puede ir allí en dos pasos con:
cd /media/448AF1848AF172B2
cd Windows/System32/config
Tenga en cuenta que :el argumento del segundo comando cd
no debe comenzar con /
si desea continuar desde el directorio especificado con el primer comando cd
.
Un nombre de ruta que comienza con una barra inclinada /
es una ruta absoluta:y siempre se interpreta comenzando desde la raíz de la jerarquía del sistema de archivos. Su segundo comando cd /Windows/...
tenía una barra inclinada al principio, por lo que no continuó desde donde lo dejó el primer comando cd
, sino que intentó rastrear una ruta completamente diferente comenzando desde el directorio raíz del sistema -una ruta eso no existió.
En su solución, tiene dos cd
comandos con rutas absolutas:
cd /media/448AF1848AF172B2
cd /media/448AF1848AF172B2/Windows/System32/config
Como su objetivo es llegar a /media/448AF1848AF172B2/Windows/System32/config
, el primer comando es completamente innecesario :el segundo comando lo llevará al directorio exacto que especificó, sin importar cuál era su directorio actual antes.
Вот простой и быстрый подход, который должен работать для файлов с произвольными именами и содержимым:
$ for file in a.txt b.txt ; do
printf 'for %s : %s\n' "$file" "$(tr ' ' '\n' < "$file" | sort | uniq -dc)";
done
for a.txt : 2 bear
for b.txt : 2 tru
Или, если вам действительно нужно точно формат, который вы показываете:
$ for file in a.txt b.txt ; do
printf 'for %s : %s x %s\n' "$file" \
$(tr ' ' '\n' < "$file" | sort | uniq -dc | awk '{print $2,$1}');
done
for a.txt : bear x 2
for b.txt : tru x 2
Здесь поможет простая команда awk
Первый шаг, так как нам нужно вычислить, сколько раз конкретное слово встречается в файле
шаг 1 :Создание нового входного файла на основе входного файла
cat input file |sed -r "s/\s+/\n/g" >inputfile_final.txt
Шаг 2 :Теперь простая команда awk с ассоциативным массивом теперь будет творить чудеса
awk '{a[$1]++}END{for(x in a){print FILENAME, x,a[x]}}' inputfile_final.txt | sort -k3 -nr| sed -n '1p'| awk '{print "for" " " $1 " " ":" $2 " " "x" " " $NF}'
выход
for inputfile_final.txt :bear x 2
Note: I have done for 1 file same method we can follow for remaining files too
$ for i in $(cat a.txt); do echo $i; done | sort | uniq -c | sort -g | tail -1
2 bear
сценарий:
$ cat topword.sh
#!/bin/bash
FILENAMES=$@
for file in $@; do
printf "$file:"
cat $file | tr ' ' '\n' | sort | uniq -c | sort -g | tail -1
done
Выход:
$ bash topword.sh a.txt b.txt
a.txt: 2 bear
b.txt: 2 tru
Теперь вот задание для вас :сделать красивый, легко читаемый сценарий из этого черновика, который я вам дал;)