How to list all binary file extensions within a directory tree?
Here's a trick to find the binary files:
grep -r -m 1 "^" <Your Root> | grep "^Binary file"
The -m 1 makes grep not read all the file.
Find binary in another binary
In case you don't need it as a function to script, but just to handle a 1-off event you can try this:
mindaugasb@bash:~/workspace $ touch file.txt
mindaugasb@bash:~/workspace $ echo "0020 0000 0000 0000 0000 0000 0000" > file.txt
mindaugasb@bash:~/workspace $ hexdump /bin/ls | grep -f file.txt
001a7a0 0020 0000 0000 0000 0000 0000 0000 0000
001aaf0 0020 0000 0000 0000 0000 0000 0000 0000
001ad30 0020 0000 0000 0000 0000 0000 0000 0000
001ad70 0020 0000 0000 0000 0000 0000 0000 0000
The file passed to grep should contain the first line of the smaller file. If there are no duplicates you are in luck.
First column of hexdump output is the offset.
If you want the hexdump output for the smaller file - and you should bet it w/o the byte offsets, because then grep will never match since byte offsets are specific to each file - you need to disable the byte offsets, like so:
mindaugasb@bash:~/workspace $ hexdump -e '16/1 "%02x " "\n"' /bin/ls | head -n1
7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
See if binary files exist in subfolders
find
is usually used to search directory tree.
file -i
can be used to print files mime type information.
Give this a try :
find . -type f -exec file -i {} + | grep ":[^:]*executable[^:]*$" | sed 's/^\(.*\):[^:]*$/\1/'
-type f
is a filter which selects regular files: not symbolic links, not directories etc.
The exec file -i {} +
executes file -i
on each regular file found in the directory tree.
file -i
is printing mime type strings:
file -i /bin/bash
/bin/bash: application/x-executable; charset=binary
grep ":[^:]*executable[^:]*$"
selects files with a mime type string which contains executable
sed 's/^\(.*\):[^:]*$/\1/'
cleans up the line in order to print only filenames, without extra mime type information.
Find all binary files in git HEAD
diff <(git grep -Ic '') <(git grep -c '') | grep '^>' | cut -d : -f 1 | cut -d ' ' -f 2-
Breaking it down:
git grep -c ''
prints the names and line counts of each file in the repository. Adding the-I
option makes the command ignore binary files.diff <(cmd1) <(cmd2)
uses process substitution to providediff
with named pipes through which the output ofcmd1
andcmd2
are sent.- The
grep
andcut
commands are used to extract the filenames from the output ofdiff
.
Cannot find binary file in storage
The problem is that you get file with wrong path. You can access files in the local app data store using the "ms-appdata:///local/" protocol. For example:
ms-appdata:///local/myBinaryFile
You could also use ApplicationData.Current.LocalFolder API the get file, please make sure the file has stored in the local folder. And the folder path looks like C:\Users\Account\AppData\Local\Packages\3e8cf79a-4746-457c-8f51-73809c7876fa_75cr2b68xxxx\LocalState
Use the ms-appx
URI scheme to refer to a file that comes from your app's package. and you could also use InstalledLocation
API.
For more detail, you could refer URI schemes
Open and read all binary files from directory an output to lists - Python
untested but try
import glob, os
path = 'filepath'
ret = []
for filename in glob.glob(os.path.join(path, '*.pkt')):
with open(os.path.join(os.getcwd(), filename), 'rb') as f:
pair_hex = ["{:02x}".format(c) for c in f.read()]
ret.append(pair_hex)
print(ret)
the above prints the following on my console which is the same as your "desired output"
[['09', '04', '04', '04', '04', '04', '04', '04', '04', '0b', '09'], ['09', '04', 'bb'], ['09', 'bb'], ['bb'], ['09', '04', '0b', '09']]
and this is what I used to create the .pkt files on my machine with out
set to a copy--paste of your "desired output"
out = [['09', '04', '04', '04', '04', '04', '04', '04', '04', '0b', '09'],['09', '04', 'bb'],['09', 'bb'],['bb'],['09', '04', '0b', '09']]
for i, a in enumerate(out):
with open(f"{i}.pkt", 'w') as f:
f.write(''.join(map(lambda s: chr(int(s, 16)), a)))
Related Topics
How to Capture Network Packets Per Pid
How to Control a User Systemd Using 'Systemctl --User' After Sudo Su - Myuser
Bash: Difference Between "Export K=1" VS. "K=1"
How to Check If Hadoop Daemons Are Running
Convert Utf8 to Utf16 Using Iconv
Sighup for Reloading Configuration
View a Particular Line of a File Denoted by a Number
Linux Command to Empty All Files of a Directory
Arch Linux - Apt-Get Update Equivalent Command
Best Approach to Writing a Generic Installer for a Linux Application
Dummy Questions About Setting Up Git on Amazon Cloud Ec2
Hook Functions for Linux Filesystem
How to Make Debian Package Install Dependencies
Why Does Arm-Linux-Gnueabi-G++-4.4 Always Build a "7-A" Binary
Saving Gmon.Out Before Killing a Process