How do I change all plain text files to .txt files in a directory? Is there such a command?

Assuming your directory is filled only with simple text files the most direct way to give all files and extension of .txt is to open a Terminal window in the directory and run the following command:

for f in *; do mv "$f" "$f.txt"; done

You have to love the command line :)


You can try using the

file -i NameofFileGoesHere

command.

File man page

See if you discover a pattern Sample Output:

file.mp4: application/octet-stream; charset=binary                                                       
filenumplayer1: inode/x-empty; charset=binary                                                          
foobar.ogg: application/octet-stream; charset=binary 

For some files it returns:

headstart.save: text/x-shellscript; charset=us-ascii

You are looking for files marked "ascii" But they could be Really any kind of file. Especially if it is a file that was not created by you. It would not be a good idea to rename it.

But if all files are indeed personal files. Based on the above info I would try the following script

#!/bin/bash
for f in * 
do
#Looking for the string us-ascii hence this command
whatis=$(file --mime "$f" | awk -F "=" '{print $2}')
if [[ $whatis == "us-ascii" ]]
then
mv "$f" "$f.txt"
fi
done

This is only to answer the question!