You, too, can -print0
by William Jackson on 2016-11-18
Do you use the command line a lot? Do you search for files with find(1)
? Do you send lists of files to xargs(1)
? Do
the files sometimes have names with spaces, apostrophes, and other special characters in them? Do you think it is great
that find -print0
takes care of that when you produce filenames, and xargs -0
takes care of that when you consume
them?
Do you write your own command line tools?
Do your command line tools generate lists of files? Can I send the output of your tools to xargs
, even if the files
have names with special characters in them?
You, too, can separate filenames in the output of your command line tools with a null character instead of a newline.
This is how I usually do it in Python:
#!/usr/bin/python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-0', '--print0', action='store_true')
args = parser.parse_args()
for filename in generate_filenames_somehow():
if args.print0:
print(filename, end='\x00')
else:
print(filename)