Ställ dig på lämplig ställe i filträdet och sedan prova
'find . -print | file -Nn -f - <enter>'
och bör ge liknande
./.bash_logout: ASCII text
./.bashrc: ASCII text
./.profile: ASCII text
./.cache/motd.legal-displayed: empty
./.cache/mc/Tree: ASCII text
./.cache/mc: directory
./.go/blog/content/gopherchina/image00.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=0], baseline, precision 8, 600x356, frames 3
./.go/blog/content/gopherchina/image01.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=0], baseline, precision 8, 600x447, frames 3
./.go/blog/content/gopherchina: directory
./.go/blog/content/gopherchina.article: UTF-8 Unicode text
och om du vill ha mot fil
'find . -print | file -Nn -f - > logfile.txt <enter>'
och om du vill se vad som skrivs till filen samtidigt du tittar på så prova med
'find . -print | file -Nn -f - | tee logfile.txt <enter>'
med detta får du en lista på vad det är för typer av filer efter varje filnamn i alla mappar.
kolonet efter gör det bekvämt att linux/unix andra strängverktyg att ta bort det som är efter, att sortera etc. då man ofta kan definiera skiljetecken som argument mellan kolumnerna och tex byta plats på det som är före och efter i kolumner
listan ovan är svår att sortera på dokument-typ och det kan man med:
awk -F $':' ' { t = $1; $1 = $2; $2 = t; print; } ' OFS=$'\t' logfile.txt > logfile_2.txt
byta plats på filnamn och dokument-typ samt ersätta ':' med en tabb-tecken
ASCII text ./snazzer-master/docs/snazzer-send-wrapper.md
ASCII text ./snazzer-master/docs/snazzer.md
a /usr/bin/env sh script, ASCII text executable ./snazzer-master/tests/fixtures.sh
a /usr/bin/env bats script, ASCII text executable ./snazzer-master/tests/snazzer-list.bats
a /usr/bin/env bats script, ASCII text executable ./snazzer-master/tests/snazzer-prune.bats
a /usr/bin/env bats script, ASCII text executable ./snazzer-master/tests/snazzer.bats
OpenSSH RSA public key ./.ssh/authorized_keys
PEM RSA private key ./.ssh/id_rsa
ASCII text, with very long lines ./.byobu/status
ASCII text ./.byobu/statusrc
och så kan skicka logfile_2.txt genom 'sort'
sort logfile_2.txt > sort1.txt och liknar
.
.
ASCII text ./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/snabb_USB/boot/grub/x86_64-efi/moddep.lst
ASCII text ./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/snabb_USB/readme.txt
ASCII text ./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/snabb_USB/syslinux/isolinux.old
ASCII text ./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/USB_sticka_64GB/vipec/CHANGES
ASCII text, with CRLF, LF line terminators ./src/john/src/ztex/fpga-bcrypt/pkt_comm/outpkt_bcrypt.v
ASCII text, with CRLF, LF line terminators ./src/john/src/ztex/fpga-bcrypt/ztex_inouttraffic/clocks.ucf
ASCII text, with CRLF, LF line terminators ./src/john/src/ztex/fpga-descrypt/ztex_inouttraffic/clocks.ucf
ASCII text, with CRLF, LF line terminators ./src/john/src/ztex/fpga-descrypt/ztex_inouttraffic/clocks.v
.
.
(code-block då tabb försvinner och blir ett mellanslag när det visas i inlägget och det blir otydligt)
sedan kan man med editor öppna filen, klippa ut det man inte vill ha, spara i ny filnamn sort_1_edit.txt
sedan ta bort allt före tabb-tecknet med:
awk -F $'\t' '{print $2}' sort_1_edit.txt > filenamn.txt
som ger:
.
.
./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/snabb_USB/boot/grub/x86_64-efi/moddep.lst
./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/snabb_USB/readme.txt
./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/snabb_USB/syslinux/isolinux.old
./vm-images/privata_filer_tas_bort/privata_filer_tas_bort/USB_sticka_64GB/vipec/CHANGES
./src/john/src/ztex/fpga-bcrypt/pkt_comm/outpkt_bcrypt.v
./src/john/src/ztex/fpga-bcrypt/ztex_inouttraffic/clocks.ucf
./src/john/src/ztex/fpga-descrypt/ztex_inouttraffic/clocks.ucf
./src/john/src/ztex/fpga-descrypt/ztex_inouttraffic/clocks.v
.
.
[edit: man kan också skippa flera steg ovan och tex. sortera på vald kolumn med 'sort
mao. allt ovanstående kan ersättas med
find . -type f -size +$((10*1024*1024))c -size -$((12*1024*1024))c -print | file -Nn -f - | sort -t$':' -k2 > sort_1.txt ; kan ta tid...
editera sort_1.txt med texteditor och klipp bort oönskade delar, spara
awk -F $':' '{print $1}' sort_1.txt > filnamn.txt ;för att rensa bort kolonet och all text efter kolonet på varje rad
Detta för filer i filträdet som är minium 10 MB och max 12MB stora
kan också extrahera ut filnamnen för en viss dokumenttyp direkt med grep, klippt och klart.
som
find . -type f -size +$((10*1024*1024))c -size -$((12*1024*1024))c -print | file -Nn -f - | grep --line-buffered "ASCII text, with CRLF line terminators" | awk -F $':' '{print $1}' > filenamn.txt
för filer mella 10 och 12 MByte storlek om man vet exakt vad det är för dokumenttyp man vill få fatt på
]
och resultatet kan använda som fillista för att tex. kopiera ut filer till annan lagring
xargs -a filenamn.txt cp -t new_folder
vill man få med filträdet för selekterade filerna i listan och det är namnkonflikt för att de heter samma sak i de olika mapparna om de läggs i samma målmapp
så kan man använda 'tar' för det i en shellscript
"
tmpfile=/tmp/myfile.tar
files="/some/folder/file1.txt /some/other/folder/file2.txt"
targetfolder=/home/you/somefolder
tar --file="$tmpfile" "$files"
tar --extract --file="$tmpfile" --directory="$targetfolder"
"
tar skapar hela filträdet som behövs för att lägga filerna på rätt ställe i trädet och att göra det med awk och andra sätt är mycket besvärligare att få till rätt.
och därefter en och en undersöka filerna om det finns eftersökta innehållet i dessa och samtidigt vet att alla filer i listan är tex. klassade som wordfiler.
på så sätt så kan man gruppera och tex man får alla wordfiler i en grupp, txt-filer i annan etc.
---
Det finns antal verktyg som sort, cut, ln, tc, wc, tail, head, colrm, split mfl. man kan bolla med för att klippa, klistra, möblera om och sätta ihop listorna så att det passar nästa steg i processningen.
och vet man inte hur det fungera så får man först läsa med 'man find' vad som gäller för tex. kommandot 'find' - eventuellt med googel-sökning hitta mer välfyllda beskrivningar och exempel.
Det kan vidare vara god ide att söka på awk, sed, men även python mfl. scriptspråk och det finns många exempel att hitta
tex. att söka hur man skriver ut bara en kolumn i en text med många kolumner så hamnade man snabbt på sida som https://unix.stackexchange.com/questions/285774/cut-column-2-... där det finns typ 7 olika sätt att lösa samma problem.
andra är tex. https://linuxhint.com/20_awk_examples/
vidare
https://developer.ibm.com/technologies/systems/articles/au-un...
där det till det mesta avhandlar unix/linux standard textverktyg för användning i konsol och script
.
.
.
- det finns massor av sådana exempel och kodsnippets för att lösa olika typer av problem som inte är lätta att formulera så att det passa i en GUI - gäller bara att man hittar vägarna in - det är också förklaringar varför riktiga sysadmin ogillar GUI då det låser in till hur den som skapade GUI tänkte en gång i tiden och passar inte riktigt för problemet man vill lösa för den här dagen.
tex harva loggfiler är ofta en sysadm vardag och för att inte drunkna så måste man lära sig konsten att filtrera och då har man awk, sed mfl. i olika script som man bygger upp över tiden.