¶ 2016-11-18 14:30:00 -0600
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)