Searching
FlyingFiles has two search windows: Search… for finding files by criteria, and Search changes… for finding recently changed files and copying them somewhere else. Both search the folder of the active panel — on disk, in an archive or on a server.
Neither window blocks the app: you can keep working in the panels while the window stays open. A closed window remembers its results; if you reopen it while the active panel shows a different folder, it starts with an empty list.
Search
Functions → Search…
Criteria
A criterion with a checkbox next to it applies only when you check it. All checked criteria must be met at the same time.
| Criterion | Options |
|---|---|
| Name (checked by default) | Mask (*, ?, _), Contains, Starts with, Ends with, Equals; the default mask is * |
| Type | Files and folders, File, Folder, Symlink, Other |
| Extension | Contains, Starts with, Ends with, Equals, Mask (*, ?, _); type it without the dot (pdf) |
| Size | greater than, less than, equal, not equal + a number + B, KB, MB, GB |
| Last modified | the same operators + a date from the calendar and a time |
| Show | All entries, Visible only, Hidden only |
| Owner contains, Group contains, Permissions contain | a piece of text, e.g. rwx |
| File content | Contains, Equals, Mask (*, ?, _) + text |
Switches:
Case sensitive — by default, letter case does not matter;
Search subfolders — on by default;
Include .ffignore file — skips items covered by the .ffignore rules of the folder you search in.
In a mask, * stands for any sequence of characters, and ? and _ for a single character. Example: report_202?.*.
Tip: Content search reads every matching file in full, as UTF-8 text. On a server or with large files, narrow the search by name, extension or size first.
Results
Search starts the search; while it runs, the button turns into Cancel, and below the list you see "Searching... found: 120".
Columns: Name, Path (relative to the folder you search in), Type, Size, Modified.
Double-clicking a result takes the panel you searched from to the folder containing that file and puts the cursor on it.
Remove from list removes the selected rows from the results (the files stay on disk).
Esc stops a running search; pressed again, it closes the window.
Search changes
Functions → Search changes… or Cmd+F2 / Alt+F2.
This window is made for the task "copy what I've changed since yesterday" — for example, uploading changed website files to the server or moving your current work to a USB flash drive.
Finding changes
In the active panel, open the folder you work in (e.g. the project folder). In the other panel, open the destination with the same structure (e.g. the same project on the server).
Open Search changes….
Set Search for changes from the last: to a number and a unit: minutes, hours, days, months (30 days each) or years (365 days each).
Check Search in subdirectories too if needed (off by default), and optionally Include .ffignore file.
Click Search.
The list contains only files (no folders) changed in that period: Name, Path, Size, Modified.
Cleaning up the list
Remove from List — the selected rows will not be copied.
Add File to .ffignore — adds the selected files to the
.ffignorerules of the folder you search in, so they do not come back next time.Add Folder to .ffignore — adds the folders of the selected files (available for files in subfolders).
When Include .ffignore file is on, files covered by the new rules disappear from the list right away.
Copying changes
Leave Show Changes checked if you want to review the plan before copying (recommended).
Click Copy. The app checks the folder in the other panel: for each file, the destination is the same relative path (
src/app.js→<other panel>/src/app.js).The question depends on the result:
"The destination panel directory structure matches. Copy … and overwrite existing destination files?"
"The destination panel directory structure does not match the change list. Copy … anyway and recreate missing subdirectories from the list?" — a sign that the other panel may be in the wrong place.
The default answer is No.
With Show Changes on, the Confirm Changes window opens with the columns Copy (checkbox), Path, Operation ("Overwrite file", "Create file", "Create folders and file"), Source and Destination. Uncheck what you do not want to copy and click Confirm. If you check Minify files next to the buttons, PHP files reach the destination without comments and unnecessary whitespace (more). Clicking a header sorts the table (a second click reverses the order, a third returns to the order from the change list), and dragging the right edge of a header changes the column width. The results table in the Search changes window works the same way; the column widths survive a restart.
Files are copied over existing ones, with their dates preserved and missing folders created. Progress, the summary and the list of failed items work as in regular copying. After a successful copy, the Search changes window closes.
Warning: Copying changes overwrites files at the destination without the conflicts dialog. Review the plan in Confirm Changes, especially when the app reports a mismatched directory structure.
Minify files
The Minify files checkbox in the Confirm Changes window makes PHP files reach the destination without comments, blank lines, indentation and unnecessary whitespace. They work the same, but take up less space. How much less depends on the file: code with lots of comments gains the most, templates with a lot of HTML the least, because the HTML stays as it is. This is a trial feature and for now it covers only PHP files (.php, .phtml, .php3, .php4, .php5, .php7, .php8).
In the Search changes window, leave Show Changes checked and click Copy.
Answer Yes to the copy question.
In the Confirm Changes window, check Minify files (to the left of the buttons). The Operation column adds “(minified)” to PHP files, e.g. “Overwrite file (minified)”.
Click Confirm.
The checkbox is cleared every time the window opens, so you turn minifying on again each time. Without Show Changes, the Confirm Changes window doesn't open and the files are copied without minifying.
What happens to the files:
All comments (
/** … */included), blank lines, indentation and line breaks disappear from the PHP code; a space stays only where it's needed. The PHP code then sits on a single line; a line break stays only after a heredoc or nowdoc block and after a#[…]attribute.HTML between the PHP tags, strings, and heredoc and nowdoc blocks stay exactly as they were, character for character — the page shows the same as before minifying.
The source files don't change. Only the copy at the destination is minified; it gets the modification date of the original.
The other files on the list are copied unchanged.
Minifying works when uploading to an FTP or SFTP server and when copying to a disk.
After copying, the window title says how many files were minified and by how much, e.g. “Copied 6 items. Minified 5 files from 48.2 KB to 21.7 KB (55% smaller).” When none of the copied files was a PHP file: “No files to minify (supported: PHP).”
A file the app isn't sure about goes to the destination unchanged. That's the case for a file with the short <? tag (its meaning depends on the server settings), with <?php not followed by whitespace, with an unclosed string, comment or heredoc, and for a file larger than 32 MB. The window title then adds e.g. “Not minified: 1 file (reason in the transfer log).”, and the reason goes to the transfer log in an entry with the text not minified.
Warning: After minifying, the PHP code sits on a single line, so line numbers in error messages and server logs don't match the original — in a file with code only, it's usually line 1. When you're tracking down an error on the server, upload the file without minifying.
Warning:
/** … */comments disappear too. If the code reads them — e.g. Doctrine annotations or the header in the main file of a WordPress plugin — copy such files without minifying.
FlyingFiles 1.7.4 · Features added after 1.0.0 are marked in the text.